home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 176-200 / disk_186 / simcpm / simcpm2.asm < prev    next >
Assembly Source File  |  1992-05-06  |  78KB  |  3,517 lines

  1. *************************************************************************
  2. *                                    *
  3. *    Z-80 Emulator for MC68000                    *
  4. *                                    *
  5. *    This file contains the target processor (Z-80)            *
  6. *    emulation routines.                        *
  7. *                                    *
  8. *************************************************************************
  9. * Last revised January 9, 1989.
  10.  
  11.     xdef    optabl,flags,mloop,mloopt,tracesad,traceead,traceflg,start2
  12.     xref    illegl,service,dump,inp,outp,movear
  13.  
  14.     include    "options.i"
  15.     include "ecpmdefs.i"
  16.     page
  17. *************************************************************************
  18. *                                    *
  19. *    Macros used by opcode simulation routines            *
  20. *                                    *
  21. *    These generate a lot of repetitive code sequences,        *
  22. *    but it's faster than doing subroutine calls.            *
  23. *                                    *
  24. *************************************************************************
  25.  
  26. jrd0    macro            ;Jump relative (add D0 to program counter).
  27.     ext.w    d0
  28.     add.w    d0,pseudopc
  29.     jmp    (return)
  30.     endm
  31.  
  32. setflag macro            ;Set Z-80 flags from 68000 flags.
  33.     ifeq    x680x0        ;68000 only
  34.     move    sr,d1
  35.     endc
  36.     ifne    x680x0        ;68010 and higher
  37.     dc.w    $42C1        ;MOVE CCR,D1
  38.     endc
  39.     and.w    regcon0f,d1
  40.     move.b    0(flagptr,d1.w),regf
  41.     ifc    '\1','SETONLY'
  42.     mexit
  43.     endc
  44.     ifnc    '\1',''
  45.     move.b    d0,\1
  46.     endc
  47.     jmp    (return)
  48.     endm
  49.  
  50. inrflag macro            ;Set flags after increment or decrement.
  51.     ifeq    x680x0        ;68000 only
  52.     move    sr,d0
  53.     endc
  54.     ifne    x680x0        ;68010 and higher
  55.     dc.w    $42C0        ;MOVE CCR,D0
  56.     endc
  57.     and.w    regcon0e,d0
  58.     and.w    regcon01,regf
  59.     or.b    0(flagptr,d0.w),regf
  60.     jmp    (return)
  61.     endm
  62.  
  63. lsxxd    macro
  64.     move.b    1(pseudopc),d0
  65.     rol.w    #8,d0
  66.     move.b    (pseudopc),d0
  67.     addq.l    #2,pseudopc
  68.     move.l    d0,a0
  69.     adda.l    targbase,a0
  70.     endm
  71.  
  72. addflag macro            ;Add and set flags.
  73.     move.b    d0,regop1(regs)
  74.     move.b    rega,regop2(regs)
  75.     move.b    regcon0e,regop3(regs)
  76.     add.b    d0,rega
  77.     setflag
  78.     endm
  79.  
  80. adcflag macro            ;Add with carry and set flags.
  81.     move.b    d0,regop1(regs)
  82.     move.b    rega,regop2(regs)
  83.     moveq    #0,d1        ;Set Zero flag for ADDX.
  84.     addx.b    d0,rega
  85.     setflag
  86.     endm
  87.  
  88. sbbflag macro            ;Subtract with borrow and set flags.
  89.     moveq    #0,d1        ;Set Zero flag for SUBX.
  90.     subx.b    d0,rega
  91.     setflag
  92.     endm
  93.  
  94. ashl    macro            ;16-bit add to or subtract from HL, set flags
  95.     move.w    reg\2(regs),d0
  96.     move.w    regh(regs),d1
  97.     asr.b    #1,regf     ;Put simulated carry flag in 68000's X flag.
  98.     ori    #4,ccr        ;Set the 68000's Z flag for ADDX/SUBX.
  99.     \1x.w    d0,d1
  100.     ifeq    x680x0        ;68000 only
  101.     move    sr,d0
  102.     endc
  103.     ifne    x680x0        ;68010 and higher
  104.     dc.w    $42C0        ;MOVE CCR,D0
  105.     endc
  106.     and.w    regcon0f,d0
  107.     move.b    0(flagptr,d0.w),regf
  108.     move.w    d1,regh(regs)
  109.     jmp    (return)
  110.     endm
  111.  
  112. ret80    macro            ;Return from subroutine.
  113.     move.b    1(pseudosp),d0
  114.     rol.w    #8,d0
  115.     move.b    (pseudosp),d0
  116.     addq.l    #2,pseudosp
  117.     lea    0(targbase,d0.l),pseudopc
  118.     jmp    (return)
  119.     endm
  120.  
  121. jmpaddr macro            ;Get address for possible jump or call.
  122.     move.b    1(pseudopc),d0
  123.     rol.w    #8,d0
  124.     move.b    (pseudopc),d0
  125.     addq.l    #2,pseudopc
  126.     endm
  127.  
  128. call80    macro            ;Call a Z-80 subroutine.
  129.     move.l    pseudopc,d1
  130.     sub.l    targbase,d1
  131.     move.b    d1,-2(pseudosp)
  132.     rol.w    #8,d1
  133.     move.b    d1,-1(pseudosp)
  134.     subq.l    #2,pseudosp
  135.     lea    0(targbase,d0.l),pseudopc
  136.     jmp    (return)
  137.     endm
  138.  
  139. rst80    macro            ;Z-80 RST instruction
  140.     move.l    pseudopc,d1
  141.     sub.l    targbase,d1
  142.     move.b    d1,-2(pseudosp)
  143.     rol.w    #8,d1
  144.     move.b    d1,-1(pseudosp)
  145.     subq.l    #2,pseudosp
  146.     lea    \1(targbase),pseudopc
  147.     jmp    (return)
  148.     endm
  149.  
  150. docyf    macro            ;Copy 68000's carry flag to Z-80.
  151.     bcs.s    1$
  152.     bclr    #0,regf
  153.     jmp    (return)
  154. 1$    bset    #0,regf
  155.     jmp    (return)
  156.     endm
  157.  
  158. dozf    macro            ;Copy 68000's zero flag to Z-80.
  159.     beq.s    1$
  160.     bclr    #6,regf
  161.     jmp    (return)
  162. 1$    bset    #6,regf
  163.     jmp    (return)
  164.     endm
  165.  
  166. calcind macro            ;Calculate (IX+d) or (IY+d).
  167.     moveq    #0,d0
  168.     move.b    (pseudopc)+,d0
  169.     add.w    regi\1(regs),d0
  170.     endm
  171.     page
  172. *************************************************************************
  173. *                                    *
  174. *    Opcode dispatcher                        *
  175. *                                    *
  176. *************************************************************************
  177.  
  178.     code
  179. start2:
  180.  
  181. * Instruction trace routine (only executed if RETURN points here).
  182. mloopt    tst.b    traceflg    ;Is tracing active?
  183.     bne.s    dotrace     ;No.
  184.     cmpa.l    tracesad,pseudopc ;Start tracing here?
  185.     bne.s    mloop        ;No.
  186.     move.b    #1,traceflg    ;Set trace flag.
  187. dotrace jsr    dump        ;Dump current instruction information.
  188.     cmpa.l    traceead,pseudopc ;End tracing here?
  189.     bne.s    mloop        ;No.
  190.     clr.b    traceflg    ;Reset trace flag.
  191.  
  192. * Instruction simulation routine
  193. mloop    moveq    #0,d0        ;Execute appropriate simulation subroutine.
  194.     move.b    (pseudopc)+,d0    ;Grab the next opcode.
  195.     asl    #2,d0        ;(D0 high word is still zero!)
  196.     move.l    0(opptr,d0.w),a0
  197.     jmp    (a0)        ;Do the subroutine.
  198.     page
  199. *************************************************************************
  200. *                                    *
  201. *    Opcode simulation routines                    *
  202. *                                    *
  203. *    Note:  I/O instructions are based as 68000 address $FF0000    *
  204. *        as is appropriate for the Compupro CPU-68K card.    *
  205. *                                    *
  206. *    Also, all routines assume that the high word of D0 is zero!    *
  207. *                                    *
  208. *************************************************************************
  209.  
  210.     even
  211.  
  212. nop00    jmp    (return)        ;00 NOP
  213.  
  214. lxib    move.b    (pseudopc)+,regc(regs)    ;01 LXI B,nnnn
  215.     move.b    (pseudopc)+,regb(regs)
  216.     jmp    (return)
  217.  
  218. staxb    move.w    regb(regs),d0        ;02 STAX B
  219.     move.b    rega,0(targbase,d0.l)
  220.     jmp    (return)
  221.  
  222. inxb    addq.w    #1,regb(regs)        ;03 INX B
  223.     jmp    (return)
  224.  
  225. inrb    addq.b    #1,regb(regs)        ;04 INR B
  226.     inrflag
  227.  
  228. dcrb    subq.b    #1,regb(regs)        ;05 DCR B
  229.     inrflag
  230.  
  231. mvib    move.b    (pseudopc)+,regb(regs)    ;06 MVI B,nn
  232.     jmp    (return)
  233.  
  234. rlc    rol.b    #1,rega         ;07 RLC
  235.     docyf
  236.  
  237. exaf    move.b    rega,d0         ;08 EXAF (Z-80)
  238.     move.b    rega2(regs),rega
  239.     move.b    d0,rega2(regs)
  240.     move.b    regf,d0
  241.     move.b    regf2(regs),regf
  242.     move.b    d0,regf2(regs)
  243.     jmp    (return)
  244.  
  245. dadb    move.w    regb(regs),d0        ;09 DAD B
  246.     add.w    d0,regh(regs)
  247.     docyf
  248.  
  249. ldaxb    move.w    regb(regs),d0        ;0A LDAX B
  250.     move.b    0(targbase,d0.l),rega
  251.     jmp    (return)
  252.  
  253. dcxb    subq.w    #1,regb(regs)        ;0B DCX B
  254.     jmp    (return)
  255.  
  256. inrc    addq.b    #1,regc(regs)        ;0C INR C
  257.     inrflag
  258.  
  259. dcrc    subq.b    #1,regc(regs)        ;0D DCR C
  260.     inrflag
  261.  
  262. mvic    move.b    (pseudopc)+,regc(regs)    ;0E MVI C,nn
  263.     jmp    (return)
  264.  
  265. rrc    ror.b    #1,rega         ;0F RRC
  266.     docyf
  267.  
  268. djnz    move.b    (pseudopc)+,d0        ;10 DJNZ dd (Z-80)
  269.     subq.b    #1,regb(regs)
  270.     beq.s    lxidx
  271.     jrd0
  272.  
  273. lxid    move.b    (pseudopc)+,rege(regs)    ;11 LXI D,nnnn
  274.     move.b    (pseudopc)+,regd(regs)
  275. lxidx    jmp    (return)
  276.  
  277. staxd    move.w    regd(regs),d0        ;12 STAX D
  278.     move.b    rega,0(targbase,d0.l)
  279.     jmp    (return)
  280.  
  281. inxd    addq.w    #1,regd(regs)        ;13 INX D
  282.     jmp    (return)
  283.  
  284. inrd    addq.b    #1,regd(regs)        ;14 INR D
  285.     inrflag
  286.  
  287. dcrd    subq.b    #1,regd(regs)        ;15 DCR D
  288.     inrflag
  289.  
  290. mvid    move.b    (pseudopc)+,regd(regs)    ;16 MVI D,nn
  291.     jmp    (return)
  292.  
  293. ral    roxr.b    #1,regf         ;17 RAL
  294.     roxl.b    #1,rega
  295.     roxl.b    #1,regf
  296.     jmp    (return)
  297.  
  298. jr    move.b    (pseudopc)+,d0        ;18 JR dd (Z-80)
  299.     jrd0
  300.  
  301. dadd    move.w    regd(regs),d0        ;19 DAD D
  302.     add.w    d0,regh(regs)
  303.     docyf
  304.  
  305. ldaxd    move.w    regd(regs),d0        ;1A LDAX D
  306.     move.b    0(targbase,d0.l),rega
  307.     jmp    (return)
  308.  
  309. dcxd    subq.w    #1,regd(regs)        ;1B DCX D
  310.     jmp    (return)
  311.  
  312. inre    addq.b    #1,rege(regs)        ;1C INR E
  313.     inrflag
  314.  
  315. dcre    subq.b    #1,rege(regs)        ;1D DCR E
  316.     inrflag
  317.  
  318. mvie    move.b    (pseudopc)+,rege(regs)    ;1E MVI E,nn
  319.     jmp    (return)
  320.  
  321. rar    roxr.b    #1,regf         ;1F RAR
  322.     roxr.b    #1,rega
  323.     roxl.b    #1,regf
  324.     jmp    (return)
  325.  
  326. jrnz    move.b    (pseudopc)+,d0        ;20 JRNZ dd (Z-80)
  327.     btst    #6,regf
  328.     bne.s    lxihx
  329.     jrd0
  330.  
  331. lxih    move.b    (pseudopc)+,regl(regs)    ;21 LXI H,nnnn
  332.     move.b    (pseudopc)+,regh(regs)
  333. lxihx    jmp    (return)
  334.  
  335. shld    lsxxd                ;22 SHLD addr
  336.     move.b    regl(regs),(a0)+
  337.     move.b    regh(regs),(a0)
  338.     jmp    (return)
  339.  
  340. inxh    addq.w    #1,regh(regs)        ;23 INX H
  341.     jmp    (return)
  342.  
  343. inrh    addq.b    #1,regh(regs)        ;24 INR H
  344.     inrflag
  345.  
  346. dcrh    subq.b    #1,regh(regs)        ;25 DCR H
  347.     inrflag
  348.  
  349. mvih    move.b    (pseudopc)+,regh(regs)    ;26 MVI H,nn
  350.     jmp    (return)
  351.  
  352. daa    move.b    regop3(regs),d0     ;27 DAA
  353.     roxr.b    #1,d0
  354.     move.b    regop2(regs),d0
  355.     move.b    regop1(regs),d1
  356.     swap    regcon0e
  357.     move.b    rega,regcon0e
  358.     and.b    regcon0f,regcon0e
  359.     cmp.b    #9,regcon0e
  360.     bhi.s    halfcy
  361.     and.b    regcon0f,d0
  362.     and.b    regcon0f,d1
  363.     ori.b    #$F0,d1
  364.     addx.b    d0,d1
  365.     bcc.s    nohalf
  366. halfcy    add.b    #6,rega
  367.     bcs.s    fullcy
  368. nohalf    btst    #0,regf
  369.     bne.s    fullcy
  370.     move.b    rega,regcon0e
  371.     and.b    #$F0,regcon0e
  372.     cmp.b    #$90,regcon0e
  373.     bls.s    nofull
  374. fullcy    add.b    #$60,rega
  375.     ori    #1,ccr
  376.     ifeq    x680x0        ;68000 only
  377. enddaa    move    sr,regf
  378.     endc
  379.     ifne    x680x0        ;68010 and higher
  380. enddaa    dc.w    $42C3        ;MOVE CCR,D3
  381.     endc
  382.     swap    regcon0e
  383.     and.w    regcon0f,regf
  384.     move.b    0(flagptr,regf.w),regf
  385.     jmp    (return)
  386. nofull    tst.b    rega
  387.     bra.s    enddaa
  388.  
  389. jrz    move.b    (pseudopc)+,d0        ;28 JRZ dd (Z-80)
  390.     btst    #6,regf
  391.     beq.s    lhldx
  392.     jrd0
  393.  
  394. dadh    asl.w    regh(regs)        ;29 DAD H (multiply by 2)
  395.     docyf
  396.  
  397. lhld    lsxxd                ;2A LHLD addr
  398.     move.b    (a0)+,regl(regs)
  399.     move.b    (a0),regh(regs)
  400. lhldx    jmp    (return)
  401.  
  402. dcxh    subq.w    #1,regh(regs)        ;2B DCX H
  403.     jmp    (return)
  404.  
  405. inrl    addq.b    #1,regl(regs)        ;2C INR L
  406.     inrflag
  407.  
  408. dcrl    subq.b    #1,regl(regs)        ;2D DCR L
  409.     inrflag
  410.  
  411. mvil    move.b    (pseudopc)+,regl(regs)    ;2E MVI L,nn
  412.     jmp    (return)
  413.  
  414. cma    not.b    rega            ;2F CMA
  415.     jmp    (return)
  416.  
  417. jrnc    move.b    (pseudopc)+,d0        ;30 JRNC dd (Z-80)
  418.     btst    #0,regf
  419.     bne.s    lxisx
  420.     jrd0
  421.  
  422. lxis    move.b    1(pseudopc),d0        ;31 LXI SP,nnnn
  423.     rol.w    #8,d0
  424.     move.b    (pseudopc),d0
  425.     addq.l    #2,pseudopc
  426.     move.l    d0,pseudosp
  427.     adda.l    targbase,pseudosp
  428. lxisx    jmp    (return)
  429.  
  430. sta    move.b    1(pseudopc),d0        ;32 STA addr
  431.     rol.w    #8,d0
  432.     move.b    (pseudopc),d0
  433.     addq.l    #2,pseudopc
  434.     move.b    rega,0(targbase,d0.l)
  435.     jmp    (return)
  436.  
  437. inxs    addq.l    #1,pseudosp        ;33 INX SP
  438.     jmp    (return)
  439.  
  440. inrm    move.w    regh(regs),d0        ;34 INR M
  441.     addq.b    #1,0(targbase,d0.l)
  442.     inrflag
  443.  
  444. dcrm    move.w    regh(regs),d0        ;35 DCR M
  445.     subq.b    #1,0(targbase,d0.l)
  446.     inrflag
  447.  
  448. mvim    move.w    regh(regs),d0        ;36 MVI M,nn
  449.     move.b    (pseudopc)+,0(targbase,d0.l)
  450.     jmp    (return)
  451.  
  452. stc    bset    #0,regf         ;37 STC
  453.     jmp    (return)
  454.  
  455. jrc    move.b    (pseudopc)+,d0        ;38 JRC dd (Z-80)
  456.     btst    #0,regf
  457.     beq.s    lxisx
  458.     jrd0
  459.  
  460. dads    move.l    pseudosp,d0        ;39 DAD SP
  461.     sub.l    targbase,d0
  462.     add.w    d0,regh(regs)
  463.     docyf
  464.  
  465. lda    move.b    1(pseudopc),d0        ;3A LDA addr
  466.     rol.w    #8,d0
  467.     move.b    (pseudopc),d0
  468.     addq.l    #2,pseudopc
  469.     move.b    0(targbase,d0.l),rega
  470.     jmp    (return)
  471.  
  472. dcxs    subq.l    #1,pseudosp        ;3B DCX SP
  473.     jmp    (return)
  474.  
  475. inra    move.b    rega,regop1(regs)    ;3C INR A
  476.     move.b    regcon01,regop2(regs)
  477.     move.b    regcon0e,regop3(regs)
  478.     addq.b    #1,rega
  479.     inrflag
  480.  
  481. dcra    subq.b    #1,rega         ;3D DCR A
  482.     inrflag
  483.  
  484. mvia    move.b    (pseudopc)+,rega    ;3E MVI A,nn
  485.     jmp    (return)
  486.  
  487. cmc    bchg    #0,regf         ;3F CMC
  488.     jmp    (return)
  489.  
  490. movebb    move.b    regb(regs),regb(regs)    ;40 MOV B,B
  491.     jmp    (return)
  492.  
  493. movebc    move.b    regc(regs),regb(regs)    ;41 MOV B,C
  494.     jmp    (return)
  495.  
  496. movebd    move.b    regd(regs),regb(regs)    ;42 MOV B,D
  497.     jmp    (return)
  498.  
  499. movebe    move.b    rege(regs),regb(regs)    ;43 MOV B,E
  500.     jmp    (return)
  501.  
  502. movebh    move.b    regh(regs),regb(regs)    ;44 MOV B,H
  503.     jmp    (return)
  504.  
  505. movebl    move.b    regl(regs),regb(regs)    ;45 MOV B,L
  506.     jmp    (return)
  507.  
  508. movebm    move.w    regh(regs),d0        ;46 MOV B,M
  509.     move.b    0(targbase,d0.l),regb(regs)
  510.     jmp    (return)
  511.  
  512. moveba    move.b    rega,regb(regs)     ;47 MOV B,A
  513.     jmp    (return)
  514.  
  515. movecb    move.b    regb(regs),regc(regs)    ;48 MOV C,B
  516.     jmp    (return)
  517.  
  518. movecc    move.b    regc(regs),regc(regs)    ;49 MOV C,C
  519.     jmp    (return)
  520.  
  521. movecd    move.b    regd(regs),regc(regs)    ;4A MOV C,D
  522.     jmp    (return)
  523.  
  524. movece    move.b    rege(regs),regc(regs)    ;4B MOV C,E
  525.     jmp    (return)
  526.  
  527. movech    move.b    regh(regs),regc(regs)    ;4C MOV C,H
  528.     jmp    (return)
  529.  
  530. movecl    move.b    regl(regs),regc(regs)    ;4D MOV C,L
  531.     jmp    (return)
  532.  
  533. movecm    move.w    regh(regs),d0        ;4E MOV C,M
  534.     move.b    0(targbase,d0.l),regc(regs)
  535.     jmp    (return)
  536.  
  537. moveca    move.b    rega,regc(regs)     ;4F MOV C,A
  538.     jmp    (return)
  539.  
  540. movedb    move.b    regb(regs),regd(regs)    ;50 MOV D,B
  541.     jmp    (return)
  542.  
  543. movedc    move.b    regc(regs),regd(regs)    ;51 MOV D,C
  544.     jmp    (return)
  545.  
  546. movedd    move.b    regd(regs),regd(regs)    ;52 MOV D,D
  547.     jmp    (return)
  548.  
  549. movede    move.b    rege(regs),regd(regs)    ;53 MOV D,E
  550.     jmp    (return)
  551.  
  552. movedh    move.b    regh(regs),regd(regs)    ;54 MOV D,H
  553.     jmp    (return)
  554.  
  555. movedl    move.b    regl(regs),regd(regs)    ;55 MOV D,L
  556.     jmp    (return)
  557.  
  558. movedm    move.w    regh(regs),d0        ;56 MOV D,M
  559.     move.b    0(targbase,d0.l),regd(regs)
  560.     jmp    (return)
  561.  
  562. moveda    move.b    rega,regd(regs)     ;57 MOV D,A
  563.     jmp    (return)
  564.  
  565. moveeb    move.b    regb(regs),rege(regs)    ;58 MOV E,B
  566.     jmp    (return)
  567.  
  568. moveec    move.b    regc(regs),rege(regs)    ;59 MOV E,C
  569.     jmp    (return)
  570.  
  571. moveed    move.b    regd(regs),rege(regs)    ;5A MOV E,D
  572.     jmp    (return)
  573.  
  574. moveee    move.b    rege(regs),rege(regs)    ;5B MOV E,E
  575.     jmp    (return)
  576.  
  577. moveeh    move.b    regh(regs),rege(regs)    ;5C MOV E,H
  578.     jmp    (return)
  579.  
  580. moveel    move.b    regl(regs),rege(regs)    ;5D MOV E,L
  581.     jmp    (return)
  582.  
  583. moveem    move.w    regh(regs),d0        ;5E MOV E,M
  584.     move.b    0(targbase,d0.l),rege(regs)
  585.     jmp    (return)
  586.  
  587. moveea    move.b    rega,rege(regs)     ;5F MOV E,A
  588.     jmp    (return)
  589.  
  590. movehb    move.b    regb(regs),regh(regs)    ;60 MOV H,B
  591.     jmp    (return)
  592.  
  593. movehc    move.b    regc(regs),regh(regs)    ;61 MOV H,C
  594.     jmp    (return)
  595.  
  596. movehd    move.b    regd(regs),regh(regs)    ;62 MOV H,D
  597.     jmp    (return)
  598.  
  599. movehe    move.b    rege(regs),regh(regs)    ;63 MOV H,E
  600.     jmp    (return)
  601.  
  602. movehh    move.b    regh(regs),regh(regs)    ;64 MOV H,H
  603.     jmp    (return)
  604.  
  605. movehl    move.b    regl(regs),regh(regs)    ;65 MOV H,L
  606.     jmp    (return)
  607.  
  608. movehm    move.w    regh(regs),d0        ;66 MOV H,M
  609.     move.b    0(targbase,d0.l),regh(regs)
  610.     jmp    (return)
  611.  
  612. moveha    move.b    rega,regh(regs)     ;67 MOV H,A
  613.     jmp    (return)
  614.  
  615. movelb    move.b    regb(regs),regl(regs)    ;68 MOV L,B
  616.     jmp    (return)
  617.  
  618. movelc    move.b    regc(regs),regl(regs)    ;69 MOV L,C
  619.     jmp    (return)
  620.  
  621. moveld    move.b    regd(regs),regl(regs)    ;6A MOV L,D
  622.     jmp    (return)
  623.  
  624. movele    move.b    rege(regs),regl(regs)    ;6B MOV L,E
  625.     jmp    (return)
  626.  
  627. movelh    move.b    regh(regs),regl(regs)    ;6C MOV L,H
  628.     jmp    (return)
  629.  
  630. movell    move.b    regl(regs),regl(regs)    ;6D MOV L,L
  631.     jmp    (return)
  632.  
  633. movelm    move.w    regh(regs),d0        ;6E MOV L,M
  634.     move.b    0(targbase,d0.l),regl(regs)
  635.     jmp    (return)
  636.  
  637. movela    move.b    rega,regl(regs)     ;6F MOV L,A
  638.     jmp    (return)
  639.  
  640. movemb    move.w    regh(regs),d0        ;70 MOV M,B
  641.     move.b    regb(regs),0(targbase,d0.l)
  642.     jmp    (return)
  643.  
  644. movemc    move.w    regh(regs),d0        ;71 MOV M,C
  645.     move.b    regc(regs),0(targbase,d0.l)
  646.     jmp    (return)
  647.  
  648. movemd    move.w    regh(regs),d0        ;72 MOV M,D
  649.     move.b    regd(regs),0(targbase,d0.l)
  650.     jmp    (return)
  651.  
  652. moveme    move.w    regh(regs),d0        ;73 MOV M,E
  653.     move.b    rege(regs),0(targbase,d0.l)
  654.     jmp    (return)
  655.  
  656. movemh    move.w    regh(regs),d0        ;74 MOV M,H
  657.     move.b    regh(regs),0(targbase,d0.l)
  658.     jmp    (return)
  659.  
  660. moveml    move.w    regh(regs),d0        ;75 MOV M,L
  661.     move.b    regl(regs),0(targbase,d0.l)
  662.     jmp    (return)
  663.  
  664. halt    jsr    service         ;76 HLT
  665.     jmp    (return)
  666.  
  667. movema    move.w    regh(regs),d0        ;77 MOV M,A
  668.     move.b    rega,0(targbase,d0.l)
  669.     jmp    (return)
  670.  
  671. moveab    move.b    regb(regs),rega     ;78 MOV A,B
  672.     jmp    (return)
  673.  
  674. moveac    move.b    regc(regs),rega     ;79 MOV A,C
  675.     jmp    (return)
  676.  
  677. movead    move.b    regd(regs),rega     ;7A MOV A,D
  678.     jmp    (return)
  679.  
  680. moveae    move.b    rege(regs),rega     ;7B MOV A,E
  681.     jmp    (return)
  682.  
  683. moveah    move.b    regh(regs),rega     ;7C MOV A,H
  684.     jmp    (return)
  685.  
  686. moveal    move.b    regl(regs),rega     ;7D MOV A,L
  687.     jmp    (return)
  688.  
  689. moveam    move.w    regh(regs),d0        ;7E MOV A,M
  690.     move.b    0(targbase,d0.l),rega
  691.     jmp    (return)
  692.  
  693. moveaa    jmp    (return)        ;7F MOV A,A
  694.  
  695. addb    move.b    regb(regs),d0        ;80 ADD B
  696.     addflag
  697.  
  698. addc    move.b    regc(regs),d0        ;81 ADD C
  699.     addflag
  700.  
  701. addd    move.b    regd(regs),d0        ;82 ADD D
  702.     addflag
  703.  
  704. adde    move.b    rege(regs),d0        ;83 ADD E
  705.     addflag
  706.  
  707. addh    move.b    regh(regs),d0        ;84 ADD H
  708.     addflag
  709.  
  710. addl    move.b    regl(regs),d0        ;85 ADD L
  711.     addflag
  712.  
  713. addm    move.w    regh(regs),d0        ;86 ADD M
  714.     move.b    0(targbase,d0.l),d0
  715.     addflag
  716.  
  717. adda    move.b    rega,regop1(regs)    ;87 ADD A
  718.     move.b    rega,regop2(regs)
  719.     move.b    regcon0e,regop3(regs)
  720.     add.b    rega,rega
  721.     setflag
  722.  
  723. adcb    move.b    regf,regop3(regs)    ;88 ADC B
  724.     asr.b    #1,regf
  725.     move.b    regb(regs),d0
  726.     adcflag
  727.  
  728. adcc    move.b    regf,regop3(regs)    ;89 ADC C
  729.     asr.b    #1,regf
  730.     move.b    regc(regs),d0
  731.     adcflag
  732.  
  733. adcd    move.b    regf,regop3(regs)    ;8A ADC D
  734.     asr.b    #1,regf
  735.     move.b    regd(regs),d0
  736.     adcflag
  737.  
  738. adce    move.b    regf,regop3(regs)    ;8B ADC E
  739.     asr.b    #1,regf
  740.     move.b    rege(regs),d0
  741.     adcflag
  742.  
  743. adch    move.b    regf,regop3(regs)    ;8C ADC H
  744.     asr.b    #1,regf
  745.     move.b    regh(regs),d0
  746.     adcflag
  747.  
  748. adcl    move.b    regf,regop3(regs)    ;8D ADC L
  749.     asr.b    #1,regf
  750.     move.b    regl(regs),d0
  751.     adcflag
  752.  
  753. adcm    move.b    regf,regop3(regs)    ;8E ADC M
  754.     move.w    regh(regs),d0
  755.     move.l    d0,a0
  756.     adda.l    targbase,a0
  757.     asr.b    #1,regf
  758.     move.b    (a0),d0
  759.     adcflag
  760.  
  761. adca    move.b    regf,regop3(regs)    ;8F ADC A
  762.     asr.b    #1,regf
  763.     move.b    rega,d0
  764.     adcflag
  765.  
  766. subb    sub.b    regb(regs),rega     ;90 SUB B
  767.     setflag
  768.  
  769. subc    sub.b    regc(regs),rega     ;91 SUB C
  770.     setflag
  771.  
  772. subd    sub.b    regd(regs),rega     ;92 SUB D
  773.     setflag
  774.  
  775. sube    sub.b    rege(regs),rega     ;93 SUB E
  776.     setflag
  777.  
  778. subh    sub.b    regh(regs),rega     ;94 SUB H
  779.     setflag
  780.  
  781. subl    sub.b    regl(regs),rega     ;95 SUB L
  782.     setflag
  783.  
  784. subm    move.w    regh(regs),d0        ;96 SUB M
  785.     sub.b    0(targbase,d0.l),rega
  786.     setflag
  787.  
  788. suba    sub.b    rega,rega        ;97 SUB A
  789.     setflag
  790.  
  791. sbbb    asr.b    #1,regf         ;98 SBB B
  792.     move.b    regb(regs),d0
  793.     sbbflag
  794.  
  795. sbbc    asr.b    #1,regf         ;99 SBB C
  796.     move.b    regc(regs),d0
  797.     sbbflag
  798.  
  799. sbbd    asr.b    #1,regf         ;9A SBB D
  800.     move.b    regd(regs),d0
  801.     sbbflag
  802.  
  803. sbbe    asr.b    #1,regf         ;9B SBB E
  804.     move.b    rege(regs),d0
  805.     sbbflag
  806.  
  807. sbbh    asr.b    #1,regf         ;9C SBB H
  808.     move.b    regh(regs),d0
  809.     sbbflag
  810.  
  811. sbbl    asr.b    #1,regf         ;9D SBB L
  812.     move.b    regl(regs),d0
  813.     sbbflag
  814.  
  815. sbbm    move.w    regh(regs),d0        ;9E SBB M
  816.     move.l    d0,a0
  817.     adda.l    targbase,a0
  818.     asr.b    #1,regf
  819.     move.b    (a0),d0
  820.     sbbflag
  821.  
  822. sbba    asr.b    #1,regf         ;9F SBB A
  823.     move.b    rega,d0
  824.     sbbflag
  825.  
  826. andb    and.b    regb(regs),rega     ;A0 ANA B
  827.     move.b    16(flagptr,rega.w),regf
  828.     jmp    (return)
  829.  
  830. andc    and.b    regc(regs),rega     ;A1 ANA C
  831.     move.b    16(flagptr,rega.w),regf
  832.     jmp    (return)
  833.  
  834. andd    and.b    regd(regs),rega     ;A2 ANA D
  835.     move.b    16(flagptr,rega.w),regf
  836.     jmp    (return)
  837.  
  838. ande    and.b    rege(regs),rega     ;A3 ANA E
  839.     move.b    16(flagptr,rega.w),regf
  840.     jmp    (return)
  841.  
  842. andh    and.b    regh(regs),rega     ;A4 ANA H
  843.     move.b    16(flagptr,rega.w),regf
  844.     jmp    (return)
  845.  
  846. andl    and.b    regl(regs),rega     ;A5 ANA L
  847.     move.b    16(flagptr,rega.w),regf
  848.     jmp    (return)
  849.  
  850. andm    move.w    regh(regs),d0        ;A6 ANA M
  851.     and.b    0(targbase,d0.l),rega
  852.     move.b    16(flagptr,rega.w),regf
  853.     jmp    (return)
  854.  
  855. anda    move.b    16(flagptr,rega.w),regf ;A7 ANA A
  856.     jmp    (return)
  857.  
  858. xrab    move.b    regb(regs),d0        ;A8 XRA B
  859.     eor.b    d0,rega
  860.     move.b    16(flagptr,rega.w),regf
  861.     jmp    (return)
  862.  
  863. xrac    move.b    regc(regs),d0        ;A9 XRA C
  864.     eor.b    d0,rega
  865.     move.b    16(flagptr,rega.w),regf
  866.     jmp    (return)
  867.  
  868. xrad    move.b    regd(regs),d0        ;AA XRA D
  869.     eor.b    d0,rega
  870.     move.b    16(flagptr,rega.w),regf
  871.     jmp    (return)
  872.  
  873. xrae    move.b    rege(regs),d0        ;AB XRA E
  874.     eor.b    d0,rega
  875.     move.b    16(flagptr,rega.w),regf
  876.     jmp    (return)
  877.  
  878. xrah    move.b    regh(regs),d0        ;AC XRA H
  879.     eor.b    d0,rega
  880.     move.b    16(flagptr,rega.w),regf
  881.     jmp    (return)
  882.  
  883. xral    move.b    regl(regs),d0        ;AD XRA L
  884.     eor.b    d0,rega
  885.     move.b    16(flagptr,rega.w),regf
  886.     jmp    (return)
  887.  
  888. xram    move.w    regh(regs),d0        ;AE XRA M
  889.     move.b    0(targbase,d0.l),d0
  890.     eor.b    d0,rega
  891.     move.b    16(flagptr,rega.w),regf
  892.     jmp    (return)
  893.  
  894. xraa    moveq    #0,rega         ;AF XRA A (clears accumulator)
  895.     move.b    16(flagptr),regf
  896.     jmp    (return)
  897.  
  898. orab    or.b    regb(regs),rega     ;B0 ORA B
  899.     move.b    16(flagptr,rega.w),regf
  900.     jmp    (return)
  901.  
  902. orac    or.b    regc(regs),rega     ;B1 ORA C
  903.     move.b    16(flagptr,rega.w),regf
  904.     jmp    (return)
  905.  
  906. orad    or.b    regd(regs),rega     ;B2 ORA D
  907.     move.b    16(flagptr,rega.w),regf
  908.     jmp    (return)
  909.  
  910. orae    or.b    rege(regs),rega     ;B3 ORA E
  911.     move.b    16(flagptr,rega.w),regf
  912.     jmp    (return)
  913.  
  914. orah    or.b    regh(regs),rega     ;B4 ORA H
  915.     move.b    16(flagptr,rega.w),regf
  916.     jmp    (return)
  917.  
  918. oral    or.b    regl(regs),rega     ;B5 ORA L
  919.     move.b    16(flagptr,rega.w),regf
  920.     jmp    (return)
  921.  
  922. oram    move.w    regh(regs),d0        ;B6 ORA M
  923.     or.b    0(targbase,d0.l),rega
  924.     move.b    16(flagptr,rega.w),regf
  925.     jmp    (return)
  926.  
  927. oraa    move.b    16(flagptr,rega.w),regf ;B7 ORA A
  928.     jmp    (return)
  929.  
  930. cmpb    cmp.b    regb(regs),rega     ;B8 CMP B
  931.     setflag
  932.  
  933. cmpc    cmp.b    regc(regs),rega     ;B9 CMP C
  934.     setflag
  935.  
  936. cmpd    cmp.b    regd(regs),rega     ;BA CMP D
  937.     setflag
  938.  
  939. cmpe    cmp.b    rege(regs),rega     ;BB CMP E
  940.     setflag
  941.  
  942. cmph    cmp.b    regh(regs),rega     ;BC CMP H
  943.     setflag
  944.  
  945. cmpl    cmp.b    regl(regs),rega     ;BD CMP L
  946.     setflag
  947.  
  948. cmpam    move.w    regh(regs),d0        ;BE CMP M
  949.     cmp.b    0(targbase,d0.l),rega
  950.     setflag
  951.  
  952. cmpaa    cmp.b    rega,rega        ;BF CMP A
  953.     setflag
  954.  
  955. rnz    btst    #6,regf         ;C0 RNZ
  956.     bne.s    popbx
  957.     ret80
  958.  
  959. popb    move.b    (pseudosp)+,regc(regs)    ;C1 POP B
  960.     move.b    (pseudosp)+,regb(regs)
  961. popbx    jmp    (return)
  962.  
  963. jnz    jmpaddr             ;C2 JNZ addr
  964.     btst    #6,regf
  965.     bne.s    jnzx
  966.     lea    0(targbase,d0.l),pseudopc
  967. jnzx    jmp    (return)
  968.  
  969. jmpa    jmpaddr             ;C3 JMP addr
  970.     lea    0(targbase,d0.l),pseudopc
  971.     jmp    (return)
  972.  
  973. cnz    jmpaddr             ;C4 CNZ addr
  974.     btst    #6,regf
  975.     bne.s    jnzx
  976.     call80
  977.  
  978. pushb    move.b    regb(regs),-(pseudosp)    ;C5 PUSH B
  979.     move.b    regc(regs),-(pseudosp)
  980.     jmp    (return)
  981.  
  982. adi    move.b    (pseudopc)+,d0        ;C6 ADI nn
  983.     addflag
  984.  
  985. rst0    rst80    $0            ;C7 RST 0
  986.  
  987. rz    btst    #6,regf         ;C8 RZ
  988.     beq.s    jzx
  989. ret    ret80                ;C9 RET
  990.  
  991. jz    jmpaddr             ;CA JZ addr
  992.     btst    #6,regf
  993.     beq.s    jzx
  994.     lea    0(targbase,d0.l),pseudopc
  995. jzx    jmp    (return)
  996.  
  997. * CB-prefix Z-80 instructions are simulated in the next module.
  998.  
  999. cz    jmpaddr             ;CC CZ addr
  1000.     btst    #6,regf
  1001.     beq.s    jzx
  1002.     call80
  1003.  
  1004. call    jmpaddr             ;CD CALL addr
  1005.     call80
  1006.  
  1007. aci    move.b    regf,regop3(regs)    ;CE ACI nn
  1008.     asr.b    #1,regf
  1009.     move.b    (pseudopc)+,d0
  1010.     adcflag
  1011.  
  1012. rst1    rst80    $8            ;CF RST 1
  1013.  
  1014. rnc    btst    #0,regf         ;D0 RNC
  1015.     bne.s    jncx
  1016.     ret80
  1017.  
  1018. popd    move.b    (pseudosp)+,rege(regs)    ;D1 POP D
  1019.     move.b    (pseudosp)+,regd(regs)
  1020.     jmp    (return)
  1021.  
  1022. jnc    jmpaddr             ;D2 JNC addr
  1023.     btst    #0,regf
  1024.     bne.s    jncx
  1025.     lea    0(targbase,d0.l),pseudopc
  1026. jncx    jmp    (return)
  1027.  
  1028. out    moveq    #0,d0            ;D3 OUT nn
  1029.     move.b    (pseudopc)+,d0    ;Port number
  1030.     lea    tmprega,a0    ;Simulated accumulator is in a 68000 register -
  1031.     move.b    rega,(a0)    ; move it to a memory location.
  1032.     jsr    outp        ;Send the byte.
  1033.     jmp    (return)
  1034.  
  1035. cnc                    ;D4 CNC addr
  1036.     jmpaddr
  1037.     btst    #0,regf
  1038.     bne.s    jncx
  1039.     call80
  1040.  
  1041. pushd    move.b    regd(regs),-(pseudosp)    ;D5 PUSH D
  1042.     move.b    rege(regs),-(pseudosp)
  1043.     jmp    (return)
  1044.  
  1045. sui    move.b    (pseudopc)+,d0        ;D6 SUI nn
  1046.     sub.b    d0,rega
  1047.     setflag
  1048.  
  1049. rst2    rst80    $10            ;D7 RST 2
  1050.  
  1051. rc    btst    #0,regf         ;D8 RC
  1052.     beq.s    jcx
  1053.     ret80
  1054.  
  1055. exx    move.l    regb(regs),d0        ;D9 EXX (Z-80)
  1056.     move.l    regb2(regs),regb(regs)
  1057.     move.l    d0,regb2(regs)
  1058.     move.w    regh(regs),d0
  1059.     move.w    regh2(regs),regh(regs)
  1060.     move.w    d0,regh2(regs)
  1061.     jmp    (return)
  1062.  
  1063. jc    jmpaddr             ;DA JC addr
  1064.     btst    #0,regf
  1065.     beq.s    jcx
  1066.     lea    0(targbase,d0.l),pseudopc
  1067. jcx    jmp    (return)
  1068.  
  1069. in    moveq    #0,d0            ;DB IN nn
  1070.     move.b    (pseudopc)+,d0    ;Port number
  1071.     lea    tmprega,a0    ;Get the byte here for now
  1072.     jsr    inp
  1073.     move.b    tmprega,rega    ;Move byte to accumulator (real register!)
  1074.     jmp    (return)
  1075.  
  1076. cc    jmpaddr             ;DC CC addr
  1077.     btst    #0,regf
  1078.     beq.s    jpox
  1079.     call80
  1080.  
  1081. * DD-prefix Z-80 instructions are simulated in the next module.
  1082.  
  1083. sbi    asr.b    #1,regf         ;DE SBI nn
  1084.     move.b    (pseudopc)+,d0
  1085.     sbbflag
  1086.  
  1087. rst3    rst80    $18            ;DF RST 3
  1088.  
  1089. rpo    btst    #2,regf         ;E0 RPO
  1090.     bne.s    jpox
  1091.     ret80
  1092.  
  1093. poph    move.b    (pseudosp)+,regl(regs)    ;E1 POP H
  1094.     move.b    (pseudosp)+,regh(regs)
  1095.     jmp    (return)
  1096.  
  1097. jpo    jmpaddr             ;E2 JPO addr
  1098.     btst    #2,regf
  1099.     bne.s    jpox
  1100.     lea    0(targbase,d0.l),pseudopc
  1101. jpox    jmp    (return)
  1102.  
  1103. xthl    move.b    regl(regs),d0        ;E3 XTHL
  1104.     move.b    (pseudosp),regl(regs)
  1105.     move.b    d0,(pseudosp)
  1106.     move.b    regh(regs),d0
  1107.     move.b    1(pseudosp),regh(regs)
  1108.     move.b    d0,1(pseudosp)
  1109.     jmp    (return)
  1110.  
  1111. cpo    jmpaddr             ;E4 CPO addr
  1112.     btst    #2,regf
  1113.     bne.s    jpox
  1114.     call80
  1115.  
  1116. pushh    move.b    regh(regs),-(pseudosp)    ;E5 PUSH H
  1117.     move.b    regl(regs),-(pseudosp)
  1118.     jmp    (return)
  1119.  
  1120. ani    and.b    (pseudopc)+,rega    ;E6 ANI nn
  1121.     move.b    16(flagptr,rega.w),regf
  1122.     jmp    (return)
  1123.  
  1124. rst4    rst80    $20            ;E7 RST 4
  1125.  
  1126. rpe    btst    #2,regf         ;E8 RPE
  1127.     beq.s    jpex
  1128.     ret80
  1129.  
  1130. pchl    move.w    regh(regs),d0        ;E9 PCHL
  1131.     lea    0(targbase,d0.l),pseudopc
  1132.     jmp    (return)
  1133.  
  1134. jpe    jmpaddr             ;EA JPE addr
  1135.     btst    #2,regf
  1136.     beq.s    jpex
  1137.     lea    0(targbase,d0.l),pseudopc
  1138. jpex    jmp    (return)
  1139.  
  1140. xchg    move.w    regd(regs),d0        ;EB XCHG
  1141.     move.w    regh(regs),regd(regs)
  1142.     move.w    d0,regh(regs)
  1143.     jmp    (return)
  1144.  
  1145. cpe    jmpaddr             ;EC CPE addr
  1146.     btst    #2,regf
  1147.     beq.s    jpex
  1148.     call80
  1149.  
  1150. * ED-prefix Z-80 instructions are simulated in the next module.
  1151.  
  1152. xri    move.b    (pseudopc)+,d0        ;EE XRI nn
  1153.     eor.b    d0,rega
  1154.     move.b    16(flagptr,rega.w),regf
  1155.     jmp    (return)
  1156.  
  1157. rst5    rst80    $28            ;EF RST 5
  1158.  
  1159. rp    btst    #7,regf         ;F0 RP
  1160.     bne.s    jpx
  1161.     ret80
  1162.  
  1163. popp    move.b    (pseudosp)+,regf    ;F1 POP P
  1164.     move.b    (pseudosp)+,rega
  1165.     jmp    (return)
  1166.  
  1167. jp    jmpaddr             ;F2 JP addr
  1168.     btst    #7,regf
  1169.     bne.s    jpx
  1170.     lea    0(targbase,d0.l),pseudopc
  1171. jpx    jmp    (return)
  1172.  
  1173. di    jmp    (return)        ;F3 DI (treated as no-op)
  1174.  
  1175. cp    jmpaddr             ;F4 CP addr
  1176.     btst    #7,regf
  1177.     bne.s    jpx
  1178.     call80
  1179.  
  1180. pushp    move.b    rega,-(pseudosp)    ;F5 PUSH PSW
  1181.     move.b    regf,-(pseudosp)
  1182.     jmp    (return)
  1183.  
  1184. oria    or.b    (pseudopc)+,rega    ;F6 ORI nn
  1185.     move.b    16(flagptr,rega.w),regf
  1186.     jmp    (return)
  1187.  
  1188. rst6    rst80    $30            ;F7 RST 6
  1189.  
  1190. rm    btst    #7,regf         ;F8 RM
  1191.     beq.s    jmx
  1192.     ret80
  1193.  
  1194. sphl    move.w    regh(regs),d0        ;F9 SPHL
  1195.     lea    0(targbase,d0.l),pseudosp
  1196.     jmp    (return)
  1197.  
  1198. jm    jmpaddr             ;FA JM addr
  1199.     btst    #7,regf
  1200.     beq.s    jmx
  1201.     lea    0(targbase,d0.l),pseudopc
  1202. jmx    jmp    (return)
  1203.  
  1204. ei    jmp    (return)        ;FB EI (treated as a no-op)
  1205.  
  1206. cm    jmpaddr             ;FC CM addr
  1207.     btst    #7,regf
  1208.     beq.s    jmx
  1209.     call80
  1210.  
  1211. * FD-prefix Z-80 instructions are simulated in the next module.
  1212.  
  1213. cpi    cmp.b    (pseudopc)+,rega    ;FE CPI nn
  1214.     setflag
  1215.  
  1216. rst7    rst80    $38            ;FF RST 7
  1217.     page
  1218. *************************************************************************
  1219. *                                    *
  1220. *    Z-80 opcode simulation routines                 *
  1221. *                                    *
  1222. *************************************************************************
  1223.  
  1224. preCB    moveq    #0,d1            ;Zero-fill high bits.
  1225.     move.b    (pseudopc)+,d1        ;Grab sub-opcode.
  1226.     asl    #2,d1
  1227.     lea    CBoptab,a0
  1228.     move.l    0(a0,d1.w),-(sp)    ;Address of simulation routine
  1229.     rts                ;Do it!
  1230.  
  1231. preDD    moveq    #0,d1
  1232.     move.b    (pseudopc)+,d1
  1233.     asl    #2,d1
  1234.     lea    DDoptab,a0
  1235.     move.l    0(a0,d1.w),-(sp)
  1236.     rts
  1237.  
  1238. prDDCB    calcind x            ;Calculate operand address.
  1239. prDDCBs moveq    #0,d1
  1240.     move.b    (pseudopc)+,d1        ;Sub-sub-opcode
  1241.     and.b    #7,d1
  1242.     cmp.b    #6,d1            ;Is it valid?
  1243.     bne.s    ilgDDCB         ;No.
  1244.     move.b    -1(pseudopc),d1     ;Get the sub-sub-opcode again.
  1245.     lsr.b    #3,d1            ;Kill low-order 3 bits.
  1246.     lsl.w    #2,d1            ;Convert to longword displacement.
  1247.     lea    DDCBopt,a0
  1248.     move.l    0(a0,d1.w),-(sp)
  1249.     rts
  1250.  
  1251. preED    moveq    #0,d1
  1252.     move.b    (pseudopc)+,d1
  1253.     asl    #2,d1
  1254.     lea    EDoptab,a0
  1255.     move.l    0(a0,d1.w),-(sp)
  1256.     rts
  1257.  
  1258. preFD    moveq    #0,d1
  1259.     move.b    (pseudopc)+,d1
  1260.     asl    #2,d1
  1261.     lea    FDoptab,a0
  1262.     move.l    0(a0,d1.w),-(sp)
  1263.     rts
  1264.  
  1265. prFDCB    calcind y            ;Calculate operand address.
  1266.     bra.s    prDDCBs         ;Now we can use DDCB routines.
  1267.  
  1268. ilgDDCB subq.l    #2,pseudopc    ;Enter here for DDCB/FDCB prefix errors.    
  1269. illgED    move.l    (sp)+,d1    ;Trash the address.
  1270.     subq.l    #1,pseudopc    ;Fix pseudo-PC for ILLEGAL.
  1271.     jmp    illegl
  1272.  
  1273. rlcb    move.b    regb(regs),d0        ;CB00 RLC B
  1274.     rol.b    #1,d0
  1275.     setflag    regb(regs)
  1276.  
  1277. rlcc    move.b    regc(regs),d0        ;CB01 RLC C
  1278.     rol.b    #1,d0
  1279.     setflag    regc(regs)
  1280.  
  1281. rlcd    move.b    regd(regs),d0        ;CB02 RLC D
  1282.     rol.b    #1,d0
  1283.     setflag    regd(regs)
  1284.  
  1285. rlce    move.b    rege(regs),d0        ;CB03 RLC E
  1286.     rol.b    #1,d0
  1287.     setflag    rege(regs)
  1288.  
  1289. rlch    move.b    regh(regs),d0        ;CB04 RLC H
  1290.     rol.b    #1,d0
  1291.     setflag    regh(regs)
  1292.  
  1293. rlcl    move.b    regl(regs),d0        ;CB05 RLC L
  1294.     rol.b    #1,d0
  1295.     setflag    regl(regs)
  1296.  
  1297. rlcm    move.w    regh(regs),d0        ;CB06 RLC M
  1298.     lea    0(targbase,d0.l),a0
  1299.     move.b    (a0),d0
  1300.     rol.b    #1,d0
  1301.     setflag (a0)
  1302.  
  1303. rlca    rol.b    #1,d0            ;CB07 RLC A
  1304.     setflag
  1305.  
  1306. rrcb    move.b    regb(regs),d0        ;CB08 RRC B
  1307.     ror.b    #1,d0
  1308.     setflag    regb(regs)
  1309.  
  1310. rrcc    move.b    regc(regs),d0        ;CB09 RRC C
  1311.     ror.b    #1,d0
  1312.     setflag    regc(regs)
  1313.  
  1314. rrcd    move.b    regd(regs),d0        ;CB0A RRC D
  1315.     ror.b    #1,d0
  1316.     setflag    regd(regs)
  1317.  
  1318. rrce    move.b    rege(regs),d0        ;CB0B RRC E
  1319.     ror.b    #1,d0
  1320.     setflag    rege(regs)
  1321.  
  1322. rrch    move.b    regh(regs),d0        ;CB0C RRC H
  1323.     ror.b    #1,d0
  1324.     setflag    regh(regs)
  1325.  
  1326. rrcl    move.b    regl(regs),d0        ;CB0D RRC L
  1327.     ror.b    #1,d0
  1328.     setflag    regl(regs)
  1329.  
  1330. rrcm    move.w    regh(regs),d0        ;CB0E RRC M
  1331.     lea    0(targbase,d0.l),a0
  1332.     move.b    (a0),d0
  1333.     ror.b    #1,d0
  1334.     setflag (a0)
  1335.  
  1336. rrca    ror.b    #1,rega            ;CB0F RRC A
  1337.     setflag
  1338.  
  1339. rlrb    move.b    regb(regs),d0        ;CB10 RL B
  1340.     roxr.b    #1,regf
  1341.     roxl.b    #1,d0
  1342.     setflag regb(regs)
  1343.  
  1344. rlrc    move.b    regc(regs),d0        ;CB11 RL C
  1345.     roxr.b    #1,regf
  1346.     roxl.b    #1,d0
  1347.     setflag regc(regs)
  1348.  
  1349. rlrd    move.b    regd(regs),d0        ;CB12 RL D
  1350.     roxr.b    #1,regf
  1351.     roxl.b    #1,d0
  1352.     setflag regd(regs)
  1353.  
  1354. rlre    move.b    rege(regs),d0        ;CB13 RL E
  1355.     roxr.b    #1,regf
  1356.     roxl.b    #1,d0
  1357.     setflag rege(regs)
  1358.  
  1359. rlrh    move.b    regh(regs),d0        ;CB14 RL H
  1360.     roxr.b    #1,regf
  1361.     roxl.b    #1,d0
  1362.     setflag regh(regs)
  1363.  
  1364. rlrl    move.b    regl(regs),d0        ;CB15 RL L
  1365.     roxr.b    #1,regf
  1366.     roxl.b    #1,d0
  1367.     setflag regl(regs)
  1368.  
  1369. rlrm    move.w    regh(regs),d0        ;CB16 RL M
  1370.     lea    0(targbase,d0.l),a0
  1371.     move.b    (a0),d0
  1372.     roxr.b    #1,regf
  1373.     roxl.b    #1,d0
  1374.     setflag (a0)
  1375.  
  1376. rlra    roxr.b    #1,regf            ;CB17 RL A
  1377.     roxl.b    #1,rega
  1378.     setflag
  1379.  
  1380. rrrb    move.b    regb(regs),d0        ;CB18 RR B
  1381.     roxr.b    #1,regf
  1382.     roxr.b    #1,d0
  1383.     setflag regb(regs)
  1384.  
  1385. rrrc    move.b    regc(regs),d0        ;CB19 RR C
  1386.     roxr.b    #1,regf
  1387.     roxr.b    #1,d0
  1388.     setflag regc(regs)
  1389.  
  1390. rrrd    move.b    regd(regs),d0        ;CB1A RR D
  1391.     roxr.b    #1,regf
  1392.     roxr.b    #1,d0
  1393.     setflag regd(regs)
  1394.  
  1395. rrre    move.b    rege(regs),d0        ;CB1B RR E
  1396.     roxr.b    #1,regf
  1397.     roxr.b    #1,d0
  1398.     setflag rege(regs)
  1399.  
  1400. rrrh    move.b    regh(regs),d0        ;CB1C RR H
  1401.     roxr.b    #1,regf
  1402.     roxr.b    #1,d0
  1403.     setflag regh(regs)
  1404.  
  1405. rrrl    move.b    regl(regs),d0        ;CB1D RR L
  1406.     roxr.b    #1,regf
  1407.     roxr.b    #1,d0
  1408.     setflag regl(regs)
  1409.  
  1410. rrrm    move.w    regh(regs),d0        ;CB1E RR M
  1411.     lea    0(targbase,d0.l),a0
  1412.     move.b    (a0),d0
  1413.     roxr.b    #1,regf
  1414.     roxr.b    #1,d0
  1415.     setflag (a0)
  1416.  
  1417. rrra    roxr.b    #1,regf            ;CB1F RR A
  1418.     roxr.b    #1,rega
  1419.     setflag
  1420.  
  1421. slab    move.b    regb(regs),d0        ;CB20 SLA B
  1422.     asl.b    #1,d0
  1423.     setflag    regb(regs)
  1424.  
  1425. slac    move.b    regc(regs),d0        ;CB21 SLA C
  1426.     asl.b    #1,d0
  1427.     setflag    regc(regs)
  1428.  
  1429. slad    move.b    regd(regs),d0        ;CB22 SLA D
  1430.     asl.b    #1,d0
  1431.     setflag    regd(regs)
  1432.  
  1433. slae    move.b    rege(regs),d0        ;CB23 SLA E
  1434.     asl.b    #1,d0
  1435.     setflag    rege(regs)
  1436.  
  1437. slah    move.b    regh(regs),d0        ;CB24 SLA H
  1438.     asl.b    #1,d0
  1439.     setflag    regh(regs)
  1440.  
  1441. slal    move.b    regl(regs),d0        ;CB25 SLA L
  1442.     asl.b    #1,d0
  1443.     setflag    regl(regs)
  1444.  
  1445. slam    move.w    regh(regs),d0        ;CB26 SLA M
  1446.     lea    0(targbase,d0.l),a0
  1447.     move.b    (a0),d0
  1448.     asl.b    #1,d0
  1449.     setflag (a0)
  1450.  
  1451. slaa    asl.b    #1,rega         ;CB27 SLA A
  1452.     setflag
  1453.  
  1454. srab    move.b    regb(regs),d0        ;CB28 SRA B
  1455.     asr.b    #1,d0
  1456.     setflag    regb(regs)
  1457.  
  1458. srac    move.b    regc(regs),d0        ;CB29 SRA C
  1459.     asr.b    #1,d0
  1460.     setflag    regc(regs)
  1461.  
  1462. srad    move.b    regd(regs),d0        ;CB2A SRA D
  1463.     asr.b    #1,d0
  1464.     setflag    regd(regs)
  1465.  
  1466. srae    move.b    rege(regs),d0        ;CB2B SRA E
  1467.     asr.b    #1,d0
  1468.     setflag    rege(regs)
  1469.  
  1470. srah    move.b    regh(regs),d0        ;CB2C SRA H
  1471.     asr.b    #1,d0
  1472.     setflag    regh(regs)
  1473.  
  1474. sral    move.b    regl(regs),d0        ;CB2D SRA L
  1475.     asr.b    #1,d0
  1476.     setflag    regl(regs)
  1477.  
  1478. sram    move.w    regh(regs),d0        ;CB2E SRA M
  1479.     lea    0(targbase,d0.l),a0
  1480.     move.b    (a0),d0
  1481.     setflag (a0)
  1482.  
  1483. sraa    asr.b    #1,rega         ;CB2F SRA A
  1484.     setflag
  1485.  
  1486. srlb    move.b    regb(regs),d0        ;CB38 SRL B
  1487.     lsr.b    #1,d0
  1488.     setflag    regb(regs)
  1489.  
  1490. srlc    move.b    regc(regs),d0        ;CB39 SRL C
  1491.     lsr.b    #1,d0
  1492.     setflag    regc(regs)
  1493.  
  1494. srld    move.b    regd(regs),d0        ;CB3A SRL D
  1495.     lsr.b    #1,d0
  1496.     setflag    regd(regs)
  1497.  
  1498. srle    move.b    rege(regs),d0        ;CB3B SRL E
  1499.     lsr.b    #1,d0
  1500.     setflag    rege(regs)
  1501.  
  1502. srlh    move.b    regh(regs),d0        ;CB3C SRL H
  1503.     lsr.b    #1,d0
  1504.     setflag    regh(regs)
  1505.  
  1506. srll    move.b    regl(regs),d0        ;CB3D SRL L
  1507.     lsr.b    #1,d0
  1508.     setflag    regl(regs)
  1509.  
  1510. srlm    move.w    regh(regs),d0        ;CB3E SRL M
  1511.     lea    0(targbase,d0.l),a0
  1512.     move.b    (a0),d0
  1513.     lsr.b    #1,d0
  1514.     setflag (a0)
  1515.  
  1516. srla    lsr.b    #1,rega         ;CB3F SRL A
  1517.     setflag
  1518.  
  1519. bit0b    btst    #0,regb(regs)        ;CB40 BIT 0,B
  1520.     dozf
  1521.  
  1522. bit0c    btst    #0,regc(regs)        ;CB41 BIT 0,C
  1523.     dozf
  1524.  
  1525. bit0d    btst    #0,regd(regs)        ;CB42 BIT 0,D
  1526.     dozf
  1527.  
  1528. bit0e    btst    #0,rege(regs)        ;CB43 BIT 0,E
  1529.     dozf
  1530.  
  1531. bit0h    btst    #0,regh(regs)        ;CB44 BIT 0,H
  1532.     dozf
  1533.  
  1534. bit0l    btst    #0,regl(regs)        ;CB45 BIT 0,L
  1535.     dozf
  1536.  
  1537. bit0m    move.w    regh(regs),d0        ;CB46 BIT 0,M
  1538.     btst    #0,0(targbase,d0.l)
  1539.     dozf
  1540.  
  1541. bit0a    btst    #0,rega         ;CB47 BIT 0,A
  1542.     dozf
  1543.  
  1544. bit1b    btst    #1,regb(regs)        ;CB48 BIT 1,B
  1545.     dozf
  1546.  
  1547. bit1c    btst    #1,regc(regs)        ;CB49 BIT 1,C
  1548.     dozf
  1549.  
  1550. bit1d    btst    #1,regd(regs)        ;CB4A BIT 1,D
  1551.     dozf
  1552.  
  1553. bit1e    btst    #1,rege(regs)        ;CB4B BIT 1,E
  1554.     dozf
  1555.  
  1556. bit1h    btst    #1,regh(regs)        ;CB4C BIT 1,H
  1557.     dozf
  1558.  
  1559. bit1l    btst    #1,regl(regs)        ;CB4D BIT 1,L
  1560.     dozf
  1561.  
  1562. bit1m    move.w    regh(regs),d0        ;CB4E BIT 1,M
  1563.     btst    #1,0(targbase,d0.l)
  1564.     dozf
  1565.  
  1566. bit1a    btst    #1,rega         ;CB4F BIT 1,A
  1567.     dozf
  1568.  
  1569. bit2b    btst    #2,regb(regs)        ;CB50 BIT 2,B
  1570.     dozf
  1571.  
  1572. bit2c    btst    #2,regc(regs)        ;CB51 BIT 2,C
  1573.     dozf
  1574.  
  1575. bit2d    btst    #2,regd(regs)        ;CB52 BIT 2,D
  1576.     dozf
  1577.  
  1578. bit2e    btst    #2,rege(regs)        ;CB53 BIT 2,E
  1579.     dozf
  1580.  
  1581. bit2h    btst    #2,regh(regs)        ;CB54 BIT 2,H
  1582.     dozf
  1583.  
  1584. bit2l    btst    #2,regl(regs)        ;CB55 BIT 2,L
  1585.     dozf
  1586.  
  1587. bit2m    move.w    regh(regs),d0        ;CB56 BIT 2,M
  1588.     btst    #2,0(targbase,d0.l)
  1589.     dozf
  1590.  
  1591. bit2a    btst    #2,rega         ;CB57 BIT 2,A
  1592.     dozf
  1593.  
  1594. bit3b    btst    #3,regb(regs)        ;CB58 BIT 3,B
  1595.     dozf
  1596.  
  1597. bit3c    btst    #3,regc(regs)        ;CB59 BIT 3,C
  1598.     dozf
  1599.  
  1600. bit3d    btst    #3,regd(regs)        ;CB5A BIT 3,D
  1601.     dozf
  1602.  
  1603. bit3e    btst    #3,rege(regs)        ;CB5B BIT 3,E
  1604.     dozf
  1605.  
  1606. bit3h    btst    #3,regh(regs)        ;CB5C BIT 3,H
  1607.     dozf
  1608.  
  1609. bit3l    btst    #3,regl(regs)        ;CB5D BIT 3,L
  1610.     dozf
  1611.  
  1612. bit3m    move.w    regh(regs),d0        ;CB5E BIT 3,M
  1613.     btst    #3,0(targbase,d0.l)
  1614.     dozf
  1615.  
  1616. bit3a    btst    #3,rega         ;CB5F BIT 3,A
  1617.     dozf
  1618.  
  1619. bit4b    btst    #4,regb(regs)        ;CB60 BIT 4,B
  1620.     dozf
  1621.  
  1622. bit4c    btst    #4,regc(regs)        ;CB61 BIT 4,C
  1623.     dozf
  1624.  
  1625. bit4d    btst    #4,regd(regs)        ;CB62 BIT 4,D
  1626.     dozf
  1627.  
  1628. bit4e    btst    #4,rege(regs)        ;CB63 BIT 4,E
  1629.     dozf
  1630.  
  1631. bit4h    btst    #4,regh(regs)        ;CB64 BIT 4,H
  1632.     dozf
  1633.  
  1634. bit4l    btst    #4,regl(regs)        ;CB65 BIT 4,L
  1635.     dozf
  1636.  
  1637. bit4m    move.w    regh(regs),d0        ;CB66 BIT 4,M
  1638.     btst    #4,0(targbase,d0.l)
  1639.     dozf
  1640.  
  1641. bit4a    btst    #4,rega         ;CB67 BIT 4,A
  1642.     dozf
  1643.  
  1644. bit5b    btst    #5,regb(regs)        ;CB68 BIT 5,B
  1645.     dozf
  1646.  
  1647. bit5c    btst    #5,regc(regs)        ;CB69 BIT 5,C
  1648.     dozf
  1649.  
  1650. bit5d    btst    #5,regd(regs)        ;CB6A BIT 5,D
  1651.     dozf
  1652.  
  1653. bit5e    btst    #5,rege(regs)        ;CB6B BIT 5,E
  1654.     dozf
  1655.  
  1656. bit5h    btst    #5,regh(regs)        ;CB6C BIT 5,H
  1657.     dozf
  1658.  
  1659. bit5l    btst    #5,regl(regs)        ;CB6D BIT 5,L
  1660.     dozf
  1661.  
  1662. bit5m    move.w    regh(regs),d0        ;CB6E BIT 5,M
  1663.     btst    #5,0(targbase,d0.l)
  1664.     dozf
  1665.  
  1666. bit5a    btst    #5,rega         ;CB6F BIT 5,A
  1667.     dozf
  1668.  
  1669. bit6b    btst    #6,regb(regs)        ;CB70 BIT 6,B
  1670.     dozf
  1671.  
  1672. bit6c    btst    #6,regc(regs)        ;CB71 BIT 6,C
  1673.     dozf
  1674.  
  1675. bit6d    btst    #6,regd(regs)        ;CB72 BIT 6,D
  1676.     dozf
  1677.  
  1678. bit6e    btst    #6,rege(regs)        ;CB73 BIT 6,E
  1679.     dozf
  1680.  
  1681. bit6h    btst    #6,regh(regs)        ;CB74 BIT 6,H
  1682.     dozf
  1683.  
  1684. bit6l    btst    #6,regl(regs)        ;CB75 BIT 6,L
  1685.     dozf
  1686.  
  1687. bit6m    move.w    regh(regs),d0        ;CB76 BIT 6,M
  1688.     btst    #6,0(targbase,d0.l)
  1689.     dozf
  1690.  
  1691. bit6a    btst    #6,rega         ;CB77 BIT 6,A
  1692.     dozf
  1693.  
  1694. bit7b    btst    #7,regb(regs)        ;CB78 BIT 7,B
  1695.     dozf
  1696.  
  1697. bit7c    btst    #7,regc(regs)        ;CB79 BIT 7,C
  1698.     dozf
  1699.  
  1700. bit7d    btst    #7,regd(regs)        ;CB7A BIT 7,D
  1701.     dozf
  1702.  
  1703. bit7e    btst    #7,rege(regs)        ;CB7B BIT 7,E
  1704.     dozf
  1705.  
  1706. bit7h    btst    #7,regh(regs)        ;CB7C BIT 7,H
  1707.     dozf
  1708.  
  1709. bit7l    btst    #7,regl(regs)        ;CB7D BIT 7,L
  1710.     dozf
  1711.  
  1712. bit7m    move.w    regh(regs),d0        ;CB7E BIT 7,M
  1713.     btst    #7,0(targbase,d0.l)
  1714.     dozf
  1715.  
  1716. bit7a    btst    #7,rega         ;CB7F BIT 7,A
  1717.     dozf
  1718.  
  1719. res0b    bclr    #0,regb(regs)        ;CB80 RES 0,B
  1720.     jmp    (return)
  1721.  
  1722. res0c    bclr    #0,regc(regs)        ;CB81 RES 0,C
  1723.     jmp    (return)
  1724.  
  1725. res0d    bclr    #0,regd(regs)        ;CB82 RES 0,D
  1726.     jmp    (return)
  1727.  
  1728. res0e    bclr    #0,rege(regs)        ;CB83 RES 0,E
  1729.     jmp    (return)
  1730.  
  1731. res0h    bclr    #0,regh(regs)        ;CB84 RES 0,H
  1732.     jmp    (return)
  1733.  
  1734. res0l    bclr    #0,regl(regs)        ;CB85 RES 0,L
  1735.     jmp    (return)
  1736.  
  1737. res0m    move.w    regh(regs),d0        ;CB86 RES 0,M
  1738.     bclr    #0,0(targbase,d0.l)
  1739.     jmp    (return)
  1740.  
  1741. res0a    bclr    #0,rega         ;CB87 RES 0,A
  1742.     jmp    (return)
  1743.  
  1744. res1b    bclr    #1,regb(regs)        ;CB88 RES 1,B
  1745.     jmp    (return)
  1746.  
  1747. res1c    bclr    #1,regc(regs)        ;CB89 RES 1,C
  1748.     jmp    (return)
  1749.  
  1750. res1d    bclr    #1,regd(regs)        ;CB8A RES 1,D
  1751.     jmp    (return)
  1752.  
  1753. res1e    bclr    #1,rege(regs)        ;CB8B RES 1,E
  1754.     jmp    (return)
  1755.  
  1756. res1h    bclr    #1,regh(regs)        ;CB8C RES 1,H
  1757.     jmp    (return)
  1758.  
  1759. res1l    bclr    #1,regl(regs)        ;CB8D RES 1,L
  1760.     jmp    (return)
  1761.  
  1762. res1m    move.w    regh(regs),d0        ;CB8E RES 1,M
  1763.     bclr    #1,0(targbase,d0.l)
  1764.     jmp    (return)
  1765.  
  1766. res1a    bclr    #1,rega         ;CB8F RES 1,A
  1767.     jmp    (return)
  1768.  
  1769. res2b    bclr    #2,regb(regs)        ;CB90 RES 2,B
  1770.     jmp    (return)
  1771.  
  1772. res2c    bclr    #2,regc(regs)        ;CB91 RES 2,C
  1773.     jmp    (return)
  1774.  
  1775. res2d    bclr    #2,regd(regs)        ;CB92 RES 2,D
  1776.     jmp    (return)
  1777.  
  1778. res2e    bclr    #2,rege(regs)        ;CB93 RES 2,E
  1779.     jmp    (return)
  1780.  
  1781. res2h    bclr    #2,regh(regs)        ;CB94 RES 2,H
  1782.     jmp    (return)
  1783.  
  1784. res2l    bclr    #2,regl(regs)        ;CB95 RES 2,L
  1785.     jmp    (return)
  1786.  
  1787. res2m    move.w    regh(regs),d0        ;CB96 RES 2,M
  1788.     bclr    #2,0(targbase,d0.l)
  1789.     jmp    (return)
  1790.  
  1791. res2a    bclr    #2,rega         ;CB97 RES 2,A
  1792.     jmp    (return)
  1793.  
  1794. res3b    bclr    #3,regb(regs)        ;CB98 RES 3,B
  1795.     jmp    (return)
  1796.  
  1797. res3c    bclr    #3,regc(regs)        ;CB99 RES 3,C
  1798.     jmp    (return)
  1799.  
  1800. res3d    bclr    #3,regd(regs)        ;CB9A RES 3,D
  1801.     jmp    (return)
  1802.  
  1803. res3e    bclr    #3,rege(regs)        ;CB9B RES 3,E
  1804.     jmp    (return)
  1805.  
  1806. res3h    bclr    #3,regh(regs)        ;CB9C RES 3,H
  1807.     jmp    (return)
  1808.  
  1809. res3l    bclr    #3,regl(regs)        ;CB9D RES 3,L
  1810.     jmp    (return)
  1811.  
  1812. res3m    move.w    regh(regs),d0        ;CB9E RES 3,M
  1813.     bclr    #3,0(targbase,d0.l)
  1814.     jmp    (return)
  1815.  
  1816. res3a    bclr    #3,rega         ;CB9F RES 3,A
  1817.     jmp    (return)
  1818.  
  1819. res4b    bclr    #4,regb(regs)        ;CBA0 RES 4,B
  1820.     jmp    (return)
  1821.  
  1822. res4c    bclr    #4,regc(regs)        ;CBA1 RES 4,C
  1823.     jmp    (return)
  1824.  
  1825. res4d    bclr    #4,regd(regs)        ;CBA2 RES 4,D
  1826.     jmp    (return)
  1827.  
  1828. res4e    bclr    #4,rege(regs)        ;CBA3 RES 4,E
  1829.     jmp    (return)
  1830.  
  1831. res4h    bclr    #4,regh(regs)        ;CBA4 RES 4,H
  1832.     jmp    (return)
  1833.  
  1834. res4l    bclr    #4,regl(regs)        ;CBA5 RES 4,L
  1835.     jmp    (return)
  1836.  
  1837. res4m    move.w    regh(regs),d0        ;CBA6 RES 4,M
  1838.     bclr    #4,0(targbase,d0.l)
  1839.     jmp    (return)
  1840.  
  1841. res4a    bclr    #4,rega         ;CBA7 RES 4,A
  1842.     jmp    (return)
  1843.  
  1844. res5b    bclr    #5,regb(regs)        ;CBA8 RES 5,B
  1845.     jmp    (return)
  1846.  
  1847. res5c    bclr    #5,regc(regs)        ;CBA9 RES 5,C
  1848.     jmp    (return)
  1849.  
  1850. res5d    bclr    #5,regd(regs)        ;CBAA RES 5,D
  1851.     jmp    (return)
  1852.  
  1853. res5e    bclr    #5,rege(regs)        ;CBAB RES 5,E
  1854.     jmp    (return)
  1855.  
  1856. res5h    bclr    #5,regh(regs)        ;CBAC RES 5,H
  1857.     jmp    (return)
  1858.  
  1859. res5l    bclr    #5,regl(regs)        ;CBAD RES 5,L
  1860.     jmp    (return)
  1861.  
  1862. res5m    move.w    regh(regs),d0        ;CBAE RES 5,M
  1863.     bclr    #5,0(targbase,d0.l)
  1864.     jmp    (return)
  1865.  
  1866. res5a    bclr    #5,rega         ;CBAF RES 5,A
  1867.     jmp    (return)
  1868.  
  1869. res6b    bclr    #6,regb(regs)        ;CBB0 RES 6,B
  1870.     jmp    (return)
  1871.  
  1872. res6c    bclr    #6,regc(regs)        ;CBB1 RES 6,C
  1873.     jmp    (return)
  1874.  
  1875. res6d    bclr    #6,regd(regs)        ;CBB2 RES 6,D
  1876.     jmp    (return)
  1877.  
  1878. res6e    bclr    #6,rege(regs)        ;CBB3 RES 6,E
  1879.     jmp    (return)
  1880.  
  1881. res6h    bclr    #6,regh(regs)        ;CBB4 RES 6,H
  1882.     jmp    (return)
  1883.  
  1884. res6l    bclr    #6,regl(regs)        ;CBB5 RES 6,L
  1885.     jmp    (return)
  1886.  
  1887. res6m    move.w    regh(regs),d0        ;CBB6 RES 6,M
  1888.     bclr    #6,0(targbase,d0.l)
  1889.     jmp    (return)
  1890.  
  1891. res6a    bclr    #6,rega         ;CBB7 RES 6,A
  1892.     jmp    (return)
  1893.  
  1894. res7b    bclr    #7,regb(regs)        ;CBB8 RES 7,B
  1895.     jmp    (return)
  1896.  
  1897. res7c    bclr    #7,regc(regs)        ;CBB9 RES 7,C
  1898.     jmp    (return)
  1899.  
  1900. res7d    bclr    #7,regd(regs)        ;CBBA RES 7,D
  1901.     jmp    (return)
  1902.  
  1903. res7e    bclr    #7,rege(regs)        ;CBBB RES 7,E
  1904.     jmp    (return)
  1905.  
  1906. res7h    bclr    #7,regh(regs)        ;CBBC RES 7,H
  1907.     jmp    (return)
  1908.  
  1909. res7l    bclr    #7,regl(regs)        ;CBBD RES 7,L
  1910.     jmp    (return)
  1911.  
  1912. res7m    move.w    regh(regs),d0        ;CBBE RES 7,M
  1913.     bclr    #7,0(targbase,d0.l)
  1914.     jmp    (return)
  1915.  
  1916. res7a    bclr    #7,rega         ;CBBF RES 7,A
  1917.     jmp    (return)
  1918.  
  1919. set0b    bset    #0,regb(regs)        ;CBC0 SET 0,B
  1920.     jmp    (return)
  1921.  
  1922. set0c    bset    #0,regc(regs)        ;CBC1 SET 0,C
  1923.     jmp    (return)
  1924.  
  1925. set0d    bset    #0,regd(regs)        ;CBC2 SET 0,D
  1926.     jmp    (return)
  1927.  
  1928. set0e    bset    #0,rege(regs)        ;CBC3 SET 0,E
  1929.     jmp    (return)
  1930.  
  1931. set0h    bset    #0,regh(regs)        ;CBC4 SET 0,H
  1932.     jmp    (return)
  1933.  
  1934. set0l    bset    #0,regl(regs)        ;CBC5 SET 0,L
  1935.     jmp    (return)
  1936.  
  1937. set0m    move.w    regh(regs),d0        ;CBC6 SET 0,M
  1938.     bset    #0,0(targbase,d0.l)
  1939.     jmp    (return)
  1940.  
  1941. set0a    bset    #0,rega         ;CBC7 SET 0,A
  1942.     jmp    (return)
  1943.  
  1944. set1b    bset    #1,regb(regs)        ;CBC8 SET 1,B
  1945.     jmp    (return)
  1946.  
  1947. set1c    bset    #1,regc(regs)        ;CBC9 SET 1,C
  1948.     jmp    (return)
  1949.  
  1950. set1d    bset    #1,regd(regs)        ;CBCA SET 1,D
  1951.     jmp    (return)
  1952.  
  1953. set1e    bset    #1,rege(regs)        ;CBCB SET 1,E
  1954.     jmp    (return)
  1955.  
  1956. set1h    bset    #1,regh(regs)        ;CBCC SET 1,H
  1957.     jmp    (return)
  1958.  
  1959. set1l    bset    #1,regl(regs)        ;CBCD SET 1,L
  1960.     jmp    (return)
  1961.  
  1962. set1m    move.w    regh(regs),d0        ;CBCE SET 1,M
  1963.     bset    #1,0(targbase,d0.l)
  1964.     jmp    (return)
  1965.  
  1966. set1a    bset    #1,rega         ;CBCF SET 1,A
  1967.     jmp    (return)
  1968.  
  1969. set2b    bset    #2,regb(regs)        ;CBD0 SET 2,B
  1970.     jmp    (return)
  1971.  
  1972. set2c    bset    #2,regc(regs)        ;CBD1 SET 2,C
  1973.     jmp    (return)
  1974.  
  1975. set2d    bset    #2,regd(regs)        ;CBD2 SET 2,D
  1976.     jmp    (return)
  1977.  
  1978. set2e    bset    #2,rege(regs)        ;CBD3 SET 2,E
  1979.     jmp    (return)
  1980.  
  1981. set2h    bset    #2,regh(regs)        ;CBD4 SET 2,H
  1982.     jmp    (return)
  1983.  
  1984. set2l    bset    #2,regl(regs)        ;CBD5 SET 2,L
  1985.     jmp    (return)
  1986.  
  1987. set2m    move.w    regh(regs),d0        ;CBD6 SET 2,M
  1988.     bset    #2,0(targbase,d0.l)
  1989.     jmp    (return)
  1990.  
  1991. set2a    bset    #2,rega         ;CBD7 SET 2,A
  1992.     jmp    (return)
  1993.  
  1994. set3b    bset    #3,regb(regs)        ;CBD8 SET 3,B
  1995.     jmp    (return)
  1996.  
  1997. set3c    bset    #3,regc(regs)        ;CBD9 SET 3,C
  1998.     jmp    (return)
  1999.  
  2000. set3d    bset    #3,regd(regs)        ;CBDA SET 3,D
  2001.     jmp    (return)
  2002.  
  2003. set3e    bset    #3,rege(regs)        ;CBDB SET 3,E
  2004.     jmp    (return)
  2005.  
  2006. set3h    bset    #3,regh(regs)        ;CBDC SET 3,H
  2007.     jmp    (return)
  2008.  
  2009. set3l    bset    #3,regl(regs)        ;CBDD SET 3,L
  2010.     jmp    (return)
  2011.  
  2012. set3m    move.w    regh(regs),d0        ;CBDE SET 3,M
  2013.     bset    #3,0(targbase,d0.l)
  2014.     jmp    (return)
  2015.  
  2016. set3a    bset    #3,rega         ;CBDF SET 3,A
  2017.     jmp    (return)
  2018.  
  2019. set4b    bset    #4,regb(regs)        ;CBE0 SET 4,B
  2020.     jmp    (return)
  2021.  
  2022. set4c    bset    #4,regc(regs)        ;CBE1 SET 4,C
  2023.     jmp    (return)
  2024.  
  2025. set4d    bset    #4,regd(regs)        ;CBE2 SET 4,D
  2026.     jmp    (return)
  2027.  
  2028. set4e    bset    #4,rege(regs)        ;CBE3 SET 4,E
  2029.     jmp    (return)
  2030.  
  2031. set4h    bset    #4,regh(regs)        ;CBE4 SET 4,H
  2032.     jmp    (return)
  2033.  
  2034. set4l    bset    #4,regl(regs)        ;CBE5 SET 4,L
  2035.     jmp    (return)
  2036.  
  2037. set4m    move.w    regh(regs),d0        ;CBE6 SET 4,M
  2038.     bset    #4,0(targbase,d0.l)
  2039.     jmp    (return)
  2040.  
  2041. set4a    bset    #4,rega         ;CBE7 SET 4,A
  2042.     jmp    (return)
  2043.  
  2044. set5b    bset    #5,regb(regs)        ;CBE8 SET 5,B
  2045.     jmp    (return)
  2046.  
  2047. set5c    bset    #5,regc(regs)        ;CBE9 SET 5,C
  2048.     jmp    (return)
  2049.  
  2050. set5d    bset    #5,regd(regs)        ;CBEA SET 5,D
  2051.     jmp    (return)
  2052.  
  2053. set5e    bset    #5,rege(regs)        ;CBEB SET 5,E
  2054.     jmp    (return)
  2055.  
  2056. set5h    bset    #5,regh(regs)        ;CBEC SET 5,H
  2057.     jmp    (return)
  2058.  
  2059. set5l    bset    #5,regl(regs)        ;CBED SET 5,L
  2060.     jmp    (return)
  2061.  
  2062. set5m    move.w    regh(regs),d0        ;CBEE SET 5,M
  2063.     bset    #5,0(targbase,d0.l)
  2064.     jmp    (return)
  2065.  
  2066. set5a    bset    #5,rega         ;CBEF SET 5,A
  2067.     jmp    (return)
  2068.  
  2069. set6b    bset    #6,regb(regs)        ;CBF0 SET 6,B
  2070.     jmp    (return)
  2071.  
  2072. set6c    bset    #6,regc(regs)        ;CBF1 SET 6,C
  2073.     jmp    (return)
  2074.  
  2075. set6d    bset    #6,regd(regs)        ;CBF2 SET 6,D
  2076.     jmp    (return)
  2077.  
  2078. set6e    bset    #6,rege(regs)        ;CBF3 SET 6,E
  2079.     jmp    (return)
  2080.  
  2081. set6h    bset    #6,regh(regs)        ;CBF4 SET 6,H
  2082.     jmp    (return)
  2083.  
  2084. set6l    bset    #6,regl(regs)        ;CBF5 SET 6,L
  2085.     jmp    (return)
  2086.  
  2087. set6m    move.w    regh(regs),d0        ;CBF6 SET 6,M
  2088.     bset    #6,0(targbase,d0.l)
  2089.     jmp    (return)
  2090.  
  2091. set6a    bset    #6,rega         ;CBF7 SET 6,A
  2092.     jmp    (return)
  2093.  
  2094. set7b    bset    #7,regb(regs)        ;CBF8 SET 7,B
  2095.     jmp    (return)
  2096.  
  2097. set7c    bset    #7,regc(regs)        ;CBF9 SET 7,C
  2098.     jmp    (return)
  2099.  
  2100. set7d    bset    #7,regd(regs)        ;CBFA SET 7,D
  2101.     jmp    (return)
  2102.  
  2103. set7e    bset    #7,rege(regs)        ;CBFB SET 7,E
  2104.     jmp    (return)
  2105.  
  2106. set7h    bset    #7,regh(regs)        ;CBFC SET 7,H
  2107.     jmp    (return)
  2108.  
  2109. set7l    bset    #7,regl(regs)        ;CBFD SET 7,L
  2110.     jmp    (return)
  2111.  
  2112. set7m    move.w    regh(regs),d0        ;CBFE SET 7,M
  2113.     bset    #7,0(targbase,d0.l)
  2114.     jmp    (return)
  2115.  
  2116. set7a    bset    #7,rega         ;CBFF SET 7,A
  2117.     jmp    (return)
  2118.  
  2119. dadixb    move.w    regb(regs),d0        ;DD09 DAD IX,B
  2120.     add.w    d0,regix(regs)
  2121.     docyf
  2122.  
  2123. dadixd    move.w    regd(regs),d0        ;DD19 DAD IX,D
  2124.     add.w    d0,regix(regs)
  2125.     docyf
  2126.  
  2127. lxiix    move.b    (pseudopc)+,regxl(regs) ;DD21 LXI IX,nnnn
  2128.     move.b    (pseudopc)+,regxh(regs)
  2129.     jmp    (return)
  2130.  
  2131. sixd    lsxxd                ;DD22 SIXD addr
  2132.     move.b    regxl(regs),(a0)+
  2133.     move.b    regxh(regs),(a0)
  2134.     jmp    (return)
  2135.  
  2136. inxix    addq.w    #1,regix(regs)        ;DD23 INX IX
  2137.     jmp    (return)
  2138.  
  2139. inrxh    addq.b    #1,regxh(regs)        ;DD24 INR XH (undocumented)
  2140.     inrflag
  2141.  
  2142. dcrxh    subq.b    #1,regxh(regs)        ;DD25 DCR XH (undocumented)
  2143.     inrflag
  2144.  
  2145. mvixh    move.b    (pseudopc)+,regxh(regs) ;DD26 MVI XH,nn (undocumented)
  2146.     jmp    (return)
  2147.  
  2148. dadixx    asl.w    regix(regs)        ;DD29 DAD IX,IX (multiply by 2)
  2149.     docyf
  2150.  
  2151. lixd    lsxxd                ;DD2A LIXD addr
  2152.     move.b    (a0)+,regxl(regs)
  2153.     move.b    (a0),regxh(regs)
  2154.     jmp    (return)
  2155.  
  2156. dcxix    subq.w    #1,regix(regs)        ;DD2B DCX IX
  2157.     jmp    (return)
  2158.  
  2159. inrxl    addq.b    #1,regxl(regs)        ;DD2C INR XL (undocumented)
  2160.     inrflag
  2161.  
  2162. dcrxl    subq.b    #1,regxl(regs)        ;DD2D DCR XL (undocumented)
  2163.     inrflag
  2164.  
  2165. mvixl    move.b    (pseudopc)+,regxl(regs) ;DD2E MVI XL,nn (undocumented)
  2166.     jmp    (return)
  2167.  
  2168. inrix    calcind x            ;DD34 INR (IX+d)
  2169.     addq.b    #1,0(targbase,d0.l)
  2170.     inrflag
  2171.  
  2172. dcrix    calcind x            ;DD35 DCR (IX+d)
  2173.     subq.b    #1,0(targbase,d0.l)
  2174.     inrflag
  2175.  
  2176. mviix    calcind x            ;DD36 MVI (IX+d),nn
  2177.     move.b    (pseudopc)+,0(targbase,d0.l)
  2178.     jmp    (return)
  2179.  
  2180. dadixs    move.l    pseudosp,d0        ;DD39 DAD IX,SP
  2181.     sub.l    targbase,d0
  2182.     add.w    d0,regix(regs)
  2183.     docyf
  2184.  
  2185. movbxh    move.b    regxh(regs),regb(regs)    ;DD44 MOV B,XH (undocumented)
  2186.     jmp    (return)
  2187.  
  2188. movbxl    move.b    regxl(regs),regb(regs)    ;DD45 MOV B,XL (undocumented)
  2189.     jmp    (return)
  2190.  
  2191. movbix    calcind x            ;DD46 MOV B,(IX+d)
  2192.     move.b    0(targbase,d0.l),regb(regs)
  2193.     jmp    (return)
  2194.  
  2195. movcxh    move.b    regxh(regs),regc(regs)    ;DD4C MOV C,XH (undocumented)
  2196.     jmp    (return)
  2197.  
  2198. movcxl    move.b    regxl(regs),regc(regs)    ;DD4D MOV C,XL (undocumented)
  2199.     jmp    (return)
  2200.  
  2201. movcix    calcind x            ;DD4E MOV C,(IX+d)
  2202.     move.b    0(targbase,d0.l),regc(regs)
  2203.     jmp    (return)
  2204.  
  2205. movdxh    move.b    regxh(regs),regd(regs)    ;DD54 MOV D,XH (undocumented)
  2206.     jmp    (return)
  2207.  
  2208. movdxl    move.b    regxl(regs),regd(regs)    ;DD55 MOV D,XL (undocumented)
  2209.     jmp    (return)
  2210.  
  2211. movdix    calcind x            ;DD56 MOV D,(IX+d)
  2212.     move.b    0(targbase,d0.l),regd(regs)
  2213.     jmp    (return)
  2214.  
  2215. movexh    move.b    regxh(regs),rege(regs)    ;DD5C MOV E,XH (undocumented)
  2216.     jmp    (return)
  2217.  
  2218. movexl    move.b    regxl(regs),rege(regs)    ;DD5D MOV E,XL (undocumented)
  2219.     jmp    (return)
  2220.  
  2221. moveix    calcind x            ;DD5E MOV E,(IX+d)
  2222.     move.b    0(targbase,d0.l),rege(regs)
  2223.     jmp    (return)
  2224.  
  2225. movxhb    move.b    regb(regs),regxh(regs)    ;DD60 MOV XH,B (undocumented)
  2226.     jmp    (return)
  2227.  
  2228. movxhc    move.b    regc(regs),regxh(regs)    ;DD61 MOV XH,C (undocumented)
  2229.     jmp    (return)
  2230.  
  2231. movxhd    move.b    regd(regs),regxh(regs)    ;DD62 MOV XH,D (undocumented)
  2232.     jmp    (return)
  2233.  
  2234. movxhe    move.b    rege(regs),regxh(regs)    ;DD63 MOV XH,E (undocumented)
  2235.     jmp    (return)
  2236.  
  2237. mvxhxh    jmp    (return)        ;DD64 MOV XH,XH (undocumented)
  2238.  
  2239. mvxhxl    move.b    regxl(regs),regxh(regs) ;DD65 MOV XH,XL (undocumented)
  2240.     jmp    (return)
  2241.  
  2242. movhix    calcind x            ;DD66 MOV H,(IX+d)
  2243.     move.b    0(targbase,d0.l),regh(regs)
  2244.     jmp    (return)
  2245.  
  2246. movxlb    move.b    regb(regs),regxl(regs)    ;DD68 MOV XL,B (undocumented)
  2247.     jmp    (return)
  2248.  
  2249. movxlc    move.b    regc(regs),regxl(regs)    ;DD69 MOV XL,C (undocumented)
  2250.     jmp    (return)
  2251.  
  2252. movxld    move.b    regd(regs),regxl(regs)    ;DD6A MOV XL,D (undocumented)
  2253.     jmp    (return)
  2254.  
  2255. movxle    move.b    rege(regs),regxl(regs)    ;DD6B MOV XL,E (undocumented)
  2256.     jmp    (return)
  2257.  
  2258. mvxlxh    move.b    regxh(regs),regxl(regs) ;DD6C MOV XL,XH (undocumented)
  2259.     jmp    (return)
  2260.  
  2261. mvxlxl    jmp    (return)        ;DD6D MOV XL,XL (undocumented)
  2262.  
  2263. movlix    calcind x            ;DD6E MOV L,(IX+d)
  2264.     move.b    0(targbase,d0.l),regl(regs)
  2265.     jmp    (return)
  2266.  
  2267. movixb    calcind x            ;DD70 MOV (IX+d),B
  2268.     move.b    regb(regs),0(targbase,d0.l)
  2269.     jmp    (return)
  2270.  
  2271. movixc    calcind x            ;DD71 MOV (IX+d),C
  2272.     move.b    regc(regs),0(targbase,d0.l)
  2273.     jmp    (return)
  2274.  
  2275. movixd    calcind x            ;DD72 MOV (IX+d),D
  2276.     move.b    regd(regs),0(targbase,d0.l)
  2277.     jmp    (return)
  2278.  
  2279. movixe    calcind x            ;DD73 MOV (IX+d),E
  2280.     move.b    rege(regs),0(targbase,d0.l)
  2281.     jmp    (return)
  2282.  
  2283. movixh    calcind x            ;DD74 MOV (IX+d),H
  2284.     move.b    regh(regs),0(targbase,d0.l)
  2285.     jmp    (return)
  2286.  
  2287. movixl    calcind x            ;DD75 MOV (IX+d),L
  2288.     move.b    regl(regs),0(targbase,d0.l)
  2289.     jmp    (return)
  2290.  
  2291. movixa    calcind x            ;DD77 MOV (IX+d),A
  2292.     move.b    rega,0(targbase,d0.l)
  2293.     jmp    (return)
  2294.  
  2295. movaxh    move.b    regxh(regs),rega    ;DD7C MOV A,XH (undocumented)
  2296.     jmp    (return)
  2297.  
  2298. movaxl    move.b    regxl(regs),rega    ;DD7D MOV A,XL (undocumented)
  2299.     jmp    (return)
  2300.  
  2301. movaix    calcind x            ;DD7E MOV A,(IX+d)
  2302.     move.b    0(targbase,d0.l),rega
  2303.     jmp    (return)
  2304.  
  2305. addxh    move.b    regxh(regs),d0        ;DD84 ADD XH (undocumented)
  2306.     addflag
  2307.  
  2308. addxl    move.b    regxl(regs),d0        ;DD85 ADD XL (undocumented)
  2309.     addflag
  2310.  
  2311. addix    calcind x            ;DD86 ADD (IX+d)
  2312.     move.b    0(targbase,d0.l),d0
  2313.     addflag
  2314.  
  2315. adcxh    move.b    regf,regop3(regs)    ;DD8C ADC XH (undocumented)
  2316.     asr.b    #1,regf
  2317.     move.b    regxh(regs),d0
  2318.     adcflag
  2319.  
  2320. adcxl    move.b    regf,regop3(regs)    ;DD8E ADC XL (undocumented)
  2321.     asr.b    #1,regf
  2322.     move.b    regxl(regs),d0
  2323.     adcflag
  2324.  
  2325. adcix    move.b    regf,regop3(regs)    ;DD8E ADC (IX+d)
  2326.     calcind x
  2327.     asr.b    #1,regf
  2328.     move.b    0(targbase,d0.l),d0
  2329.     adcflag
  2330.     
  2331. subxh    sub.b    regxh(regs),rega    ;DD94 SUB XH (undocumented)
  2332.     setflag
  2333.  
  2334. subxl    sub.b    regxl(regs),rega    ;DD95 SUB XL (undocumented)
  2335.     setflag
  2336.  
  2337. subix    calcind x            ;DD96 SUB (IX+d)
  2338.     sub.b    0(targbase,d0.l),rega
  2339.     setflag
  2340.  
  2341. sbbxh    asr.b    #1,regf         ;DD9C SBB XH (undocumented)
  2342.     move.b    regxh(regs),d0
  2343.     sbbflag
  2344.  
  2345. sbbxl    asr.b    #1,regf         ;DD9D SBB XL (undocumented)
  2346.     move.b    regxl(regs),d0
  2347.     sbbflag
  2348.  
  2349. sbbix    calcind x            ;DD9E SBB (IX+d)
  2350.     asr.b    #1,regf
  2351.     move.b    0(targbase,d0.l),d0
  2352.     sbbflag
  2353.  
  2354. anaxh    and.b    regxh(regs),rega    ;DDA4 ANA XH (undocumented)
  2355.     move.b    16(flagptr,rega.w),regf
  2356.     jmp    (return)
  2357.  
  2358. anaxl    and.b    regxl(regs),rega    ;DDA5 ANA XL (undocumented)
  2359.     move.b    16(flagptr,rega.w),regf
  2360.     jmp    (return)
  2361.  
  2362. anaix    calcind x            ;DDA6 ANA (IX+d)
  2363.     and.b    0(targbase,d0.l),rega
  2364.     move.b    16(flagptr,rega.w),regf
  2365.     jmp    (return)
  2366.  
  2367. xraxh    move.b    regxh(regs),d0        ;DDAC XRA XH (undocumented)
  2368.     eor.b    d0,rega
  2369.     move.b    16(flagptr,rega.w),regf
  2370.     jmp    (return)
  2371.  
  2372. xraxl    move.b    regxl(regs),d0        ;DDAD XRA XL (undocumented)
  2373.     eor.b    d0,rega
  2374.     move.b    16(flagptr,rega.w),regf
  2375.     jmp    (return)
  2376.  
  2377. xraix    calcind x            ;DDAE XRA (IX+d)
  2378.     move.b    0(targbase,d0.l),d0
  2379.     eor.b    d0,rega
  2380.     move.b    16(flagptr,rega.w),regf
  2381.     jmp    (return)
  2382.  
  2383. oraxh    or.b    regxh(regs),rega    ;DDB4 ORA XH (undocumented)
  2384.     move.b    16(flagptr,rega.w),regf
  2385.     jmp    (return)
  2386.  
  2387. oraxl    or.b    regxl(regs),rega    ;DDB5 ORA XL (undocumented)
  2388.     move.b    16(flagptr,rega.w),regf
  2389.     jmp    (return)
  2390.  
  2391. oraix    calcind x            ;DDB6 ORA (IX+d)
  2392.     or.b    0(targbase,d0.l),rega
  2393.     move.b    16(flagptr,rega.w),regf
  2394.     jmp    (return)
  2395.  
  2396. cmpxh    cmp.b    regxh(regs),rega    ;DDBC CMP XH (undocumented)
  2397.     setflag
  2398.  
  2399. cmpxl    cmp.b    regxl(regs),rega    ;DDBD CMP XL (undocumented)
  2400.     setflag
  2401.  
  2402. rlcix    move.b    0(targbase,d0.l),d0    ;DDCB06 RLC (IX+d)
  2403.     rol.b    #1,d0
  2404.     setflag SETONLY
  2405.     move.b    d0,0(targbase,d0.l)
  2406.     jmp    (return)
  2407.  
  2408. rrcix    move.b    0(targbase,d0.l),d1    ;DDCB0E RRC (IX+d)
  2409.     ror.b    #1,d0
  2410.     setflag SETONLY
  2411.     move.b    d0,0(targbase,d0.l)
  2412.     jmp    (return)
  2413.  
  2414. rlix    move.b    0(targbase,d0.l),d1    ;DDCB16 RL (IX+d)
  2415.     roxr.b    #1,regf
  2416.     roxl.b    #1,d1
  2417.     roxl.b    #1,regf
  2418.     move.b    d1,0(targbase,d0.l)
  2419.     jmp    (return)
  2420.  
  2421. rrix    move.b    0(targbase,d0.l),d1    ;DDCB1E RR (IX+d)
  2422.     roxr.b    #1,regf
  2423.     roxr.b    #1,d1
  2424.     roxl.b    #1,regf
  2425.     move.b    d1,0(targbase,d0.l)
  2426.     jmp    (return)
  2427.  
  2428. slaix    move.b    0(targbase,d0.l),d1    ;DDCB26 SLA (IX+d)
  2429.     asl.b    #1,d1
  2430.     bcs.s    slaixc
  2431.     bclr    #0,regf
  2432.     move.b    d1,0(targbase,d0.l)
  2433.     jmp    (return)
  2434. slaixc    bset    #0,regf
  2435.     move.b    d1,0(targbase,d0.l)
  2436.     jmp    (return)
  2437.  
  2438. sraix    move.b    0(targbase,d0.l),d1    ;DDCB2E SRA (IX+d)
  2439.     asr.b    #1,d1
  2440.     bcs.s    sraixc
  2441.     bclr    #0,regf
  2442.     move.b    d1,0(targbase,d0.l)
  2443.     jmp    (return)
  2444. sraixc    bset    #0,regf
  2445.     move.b    d1,0(targbase,d0.l)
  2446.     jmp    (return)
  2447.  
  2448. srlix    move.b    0(targbase,d0.l),d1    ;DDCB3E SRL (IX+d)
  2449.     lsr.b    #1,d1
  2450.     bcs.s    srlixc
  2451.     bclr    #0,regf
  2452.     move.b    d1,0(targbase,d0.l)
  2453.     jmp    (return)
  2454. srlixc    bset    #0,regf
  2455.     move.b    d1,0(targbase,d0.l)
  2456.     jmp    (return)
  2457.  
  2458. bit0ix    btst    #0,0(targbase,d0.l)    ;DDCB46 BIT 0,(IX+d)
  2459.     dozf
  2460.  
  2461. bit1ix    btst    #1,0(targbase,d0.l)    ;DDCB4E BIT 1,(IX+d)
  2462.     dozf
  2463.  
  2464. bit2ix    btst    #2,0(targbase,d0.l)    ;DDCB56 BIT 2,(IX+d)
  2465.     dozf
  2466.  
  2467. bit3ix    btst    #3,0(targbase,d0.l)    ;DDCB5E BIT 3,(IX+d)
  2468.     dozf
  2469.  
  2470. bit4ix    btst    #4,0(targbase,d0.l)    ;DDCB66 BIT 4,(IX+d)
  2471.     dozf
  2472.  
  2473. bit5ix    btst    #5,0(targbase,d0.l)    ;DDCB6E BIT 5,(IX+d)
  2474.     dozf
  2475.  
  2476. bit6ix    btst    #6,0(targbase,d0.l)    ;DDCB76 BIT 6,(IX+d)
  2477.     dozf
  2478.  
  2479. bit7ix    btst    #7,0(targbase,d0.l)    ;DDCB7E BIT 7,(IX+d)
  2480.     dozf
  2481.  
  2482. res0ix    bclr    #0,0(targbase,d0.l)    ;DDCB86 RES 0,(IX+d)
  2483.     jmp    (return)
  2484.  
  2485. res1ix    bclr    #1,0(targbase,d0.l)    ;DDCB8E RES 1,(IX+d)
  2486.     jmp    (return)
  2487.  
  2488. res2ix    bclr    #2,0(targbase,d0.l)    ;DDCB96 RES 2,(IX+d)
  2489.     jmp    (return)
  2490.  
  2491. res3ix    bclr    #3,0(targbase,d0.l)    ;DDCB9E RES 3,(IX+d)
  2492.     jmp    (return)
  2493.  
  2494. res4ix    bclr    #4,0(targbase,d0.l)    ;DDCBA6 RES 4,(IX+d)
  2495.     jmp    (return)
  2496.  
  2497. res5ix    bclr    #5,0(targbase,d0.l)    ;DDCBAE RES 5,(IX+d)
  2498.     jmp    (return)
  2499.  
  2500. res6ix    bclr    #6,0(targbase,d0.l)    ;DDCBB6 RES 6,(IX+d)
  2501.     jmp    (return)
  2502.  
  2503. res7ix    bclr    #7,0(targbase,d0.l)    ;DDCBBE RES 7,(IX+d)
  2504.     jmp    (return)
  2505.  
  2506. set0ix    bset    #0,0(targbase,d0.l)    ;DDCBC6 SET 0,(IX+d)
  2507.     jmp    (return)
  2508.  
  2509. set1ix    bset    #1,0(targbase,d0.l)    ;DDCBCE SET 1,(IX+d)
  2510.     jmp    (return)
  2511.  
  2512. set2ix    bset    #2,0(targbase,d0.l)    ;DDCBD6 SET 2,(IX+d)
  2513.     jmp    (return)
  2514.  
  2515. set3ix    bset    #3,0(targbase,d0.l)    ;DDCBDE SET 3,(IX+d)
  2516.     jmp    (return)
  2517.  
  2518. set4ix    bset    #4,0(targbase,d0.l)    ;DDCBE6 SET 4,(IX+d)
  2519.     jmp    (return)
  2520.  
  2521. set5ix    bset    #5,0(targbase,d0.l)    ;DDCBEE SET 5,(IX+d)
  2522.     jmp    (return)
  2523.  
  2524. set6ix    bset    #6,0(targbase,d0.l)    ;DDCBF6 SET 6,(IX+d)
  2525.     jmp    (return)
  2526.  
  2527. set7ix    bset    #7,0(targbase,d0.l)    ;DDCBFE SET 7,(IX+d)
  2528.     jmp    (return)
  2529.  
  2530. cmpix    calcind x            ;DDBE CMP (IX+d)
  2531.     cmp.b    0(targbase,d0.l),rega
  2532.     setflag
  2533.  
  2534. popix    move.b    (pseudosp)+,regxl(regs) ;DDE1 POP IX
  2535.     move.b    (pseudosp)+,regxh(regs)
  2536.     jmp    (return)
  2537.  
  2538. xtix    move.b    regxl(regs),d0        ;DDE3 XTIX
  2539.     move.b    (pseudosp),regxl(regs)
  2540.     move.b    d0,(pseudosp)
  2541.     move.b    regxh(regs),d0
  2542.     move.b    1(pseudosp),regxh(regs)
  2543.     move.b    d0,1(pseudosp)
  2544.     jmp    (return)
  2545.  
  2546. pushix    move.b    regxh(regs),-(pseudosp) ;DDE5 PUSH IX
  2547.     move.b    regxl(regs),-(pseudosp)
  2548.     jmp    (return)
  2549.  
  2550. pcix    move.w    regix(regs),d0        ;DDE9 PCIX
  2551.     lea    0(targbase,d0.l),pseudopc
  2552.     jmp    (return)
  2553.  
  2554. spix    move.w    regix(regs),d0        ;DDF9 SPIX
  2555.     lea    0(targbase,d0.l),pseudosp
  2556.     jmp    (return)
  2557.  
  2558. inbc    move.b    regc(regs),d0        ;ED40 IN B,(C)
  2559.     lea    regb(regs),a0
  2560.     jsr    inp
  2561.     jmp    (return)
  2562.  
  2563. outcb    move.b    regc(regs),d0        ;ED41 OUT (C),B
  2564.     lea    regb(regs),a0
  2565.     jsr    outp
  2566.     jmp    (return)
  2567.  
  2568. dsbbb    ashl    sub,b            ;ED42 DSBB B
  2569.  
  2570. sbcd    lsxxd                ;ED43 SBCD addr
  2571.     move.b    regc(regs),(a0)+
  2572.     move.b    regb(regs),(a0)
  2573.     jmp    (return)
  2574.  
  2575. nega    neg.b    rega            ;ED44 NEG
  2576.     setflag
  2577.  
  2578. retn    equ    ret            ;ED45 RETN (treated as RET)
  2579.  
  2580. im0    jmp    (return)        ;ED46 IM0 (set 8080A interrupt mode)
  2581.  
  2582. moveia    move.b    rega,regi(regs)     ;ED47 MOV I,A
  2583.     jmp    (return)
  2584.  
  2585. incc    move.b    regc(regs),d0        ;ED48 IN C,(C)
  2586.     lea    regc(regs),a0
  2587.     jsr    inp
  2588.     jmp    (return)
  2589.  
  2590. outcc    move.b    regc(regs),d0        ;ED49 OUT (C),C
  2591.     lea    regc(regs),a0
  2592.     jsr    outp
  2593.     jmp    (return)
  2594.  
  2595. dadcb    ashl    add,b            ;ED4A DADC B
  2596.  
  2597. lbcd    lsxxd                ;ED4B LBCD addr
  2598.     move.b    (a0)+,regc(regs)
  2599.     move.b    (a0),regb(regs)
  2600.     jmp    (return)
  2601.  
  2602. reti    equ    ret            ;ED4D RETI (treated as RET)
  2603.  
  2604. movera    jmp    (return)        ;ED4F MOV R,A (ignored)
  2605.  
  2606. indc    move.b    regc(regs),d0        ;ED50 IN D,(C)
  2607.     lea    regd(regs),a0
  2608.     jsr    inp
  2609.     jmp    (return)
  2610.  
  2611. outcd    move.b    regc(regs),d0        ;ED51 OUT (C),D
  2612.     lea    regd(regs),a0
  2613.     jsr    outp
  2614.     jmp    (return)
  2615.  
  2616. dsbbd    ashl    sub,d            ;ED52 DSBB D
  2617.  
  2618. sded    lsxxd                ;ED53 SDED addr
  2619.     move.b    rege(regs),(a0)+
  2620.     move.b    regd(regs),(a0)
  2621.     jmp    (return)
  2622.  
  2623. im1    jmp    (return)        ;ED56 IM1 (ignored)
  2624.  
  2625. moveai    move.b    regi(regs),rega     ;ED57 MOV A,I
  2626.     jmp    (return)
  2627.  
  2628. inec    move.b    regc(regs),d0        ;ED58 IN E,(C)
  2629.     lea    rege(regs),a0
  2630.     jsr    inp
  2631.     jmp    (return)
  2632.  
  2633. outce    move.b    regc(regs),d0        ;ED59 OUT (C),E
  2634.     lea    rege(regs),a0
  2635.     jsr    outp
  2636.     jmp    (return)
  2637.  
  2638. dadcd    ashl    add,d            ;ED5A DADC D
  2639.  
  2640. lded    lsxxd                ;ED5B LDED addr
  2641.     move.b    (a0)+,rege(regs)
  2642.     move.b    (a0),regd(regs)
  2643.     jmp    (return)
  2644.  
  2645. im2    jmp    (return)        ;ED5E IM2 (ignored)
  2646.  
  2647. *                    ;ED5F MOV A,R (handled in simcpm1)
  2648.  
  2649. inhc    move.b    regc(regs),d0        ;ED60 IN H,(C)
  2650.     lea    regh(regs),a0
  2651.     jsr    inp
  2652.     jmp    (return)
  2653.  
  2654. outch    move.b    regc(regs),d0        ;ED61 OUT (C),H
  2655.     lea    regh(regs),a0
  2656.     jsr    outp
  2657.     jmp    (return)
  2658.  
  2659. dsbbh    ashl    sub,h            ;ED62 DSBB H
  2660.  
  2661. *                    ;ED63 SHLD addr (uses 8080 routine 22)
  2662.  
  2663. rrd    move.w    regh(regs),d0        ;ED67 RRD
  2664.     lea    0(targbase,d0.l),a0    ;Address of memory operand
  2665.     move.b    rega,d1     ;Original contents of the accumulator
  2666.     move.b    (a0),d0
  2667.     and.b    regcon0f,d0    ;This part shifts out of the memory operand.
  2668.     and.b    #$F0,rega
  2669.     or.b    d0,rega     ;Adjust the accumulator.
  2670.     move.b    (a0),d0
  2671.     lsr.b    #4,d0        ;Shift the memory operand 4 bits right.
  2672.     and.b    regcon0f,d1    ;Low-order nybble of original accumulator
  2673.     lsl.b    #4,d1        ;It moves to the high-order nybble.
  2674.     or.b    d1,d0        ;Put it into the memory operand.
  2675.     move.b    d0,(a0)     ;Restore the new memory operand.
  2676.     jmp    (return)
  2677.  
  2678. inlc    move.b    regc(regs),d0        ;ED68 IN L,(C)
  2679.     lea    regl(regs),a0
  2680.     jsr    inp
  2681.     jmp    (return)
  2682.  
  2683. outcl    move.b    regc(regs),d0        ;ED69 OUT (C),L
  2684.     lea    regl(regs),a0
  2685.     jsr    outp
  2686.     jmp    (return)
  2687.  
  2688. dadch    ashl    add,h            ;ED6A DADC H
  2689.  
  2690. *                    ;ED6B LHLD addr (uses 8080 routine 2A)
  2691.  
  2692. rld    move.w    regh(regs),d0        ;ED6F RLD
  2693.     lea    0(targbase,d0.l),a0    ;Address of memory operand
  2694.     move.b    rega,d1     ;Original contents of the accumulator
  2695.     move.b    (a0),d0
  2696.     lsr.b    #4,d0        ;This part shifts out of the memory operand.
  2697.     and.b    #$F0,rega
  2698.     or.b    d0,rega     ;Adjust the accumulator.
  2699.     move.b    (a0),d0
  2700.     lsl.b    #4,d0        ;Shift the memory operand 4 bits left.
  2701.     and.b    regcon0f,d1    ;Low-order nybble of original accumulator
  2702.     or.b    d1,d0        ;Put it into the memory operand.
  2703.     move.b    d0,(a0)     ;Restore the new memory operand.
  2704.     jmp    (return)
  2705.  
  2706. inmc    move.b    regc(regs),d0        ;ED70 IN M,(C)
  2707.     move.w    regh(regs),d1
  2708.     lea    0(targbase,d1.l),a0
  2709.     jsr    inp
  2710.     jmp    (return)
  2711.  
  2712. outcm    move.b    regc(regs),d0        ;ED71 OUT (C),M
  2713.     move.w    regh(regs),d1
  2714.     lea    0(targbase,d1.l),a0
  2715.     jsr    outp
  2716.     jmp    (return)
  2717.  
  2718. dsbbs    move.w    pseudosp,d0        ;ED72 DSBB SP
  2719.     move.w    regh(regs),d1
  2720.     asr.b    #1,regf     ;Put simulated carry flag in 68000's X flag.
  2721.     ori    #4,ccr        ;Set the 68000's Z flag for ADDX/SUBX.
  2722.     subx.w    d0,d1
  2723.     ifeq    x680x0        ;68000 only
  2724.     move    sr,d0
  2725.     endc
  2726.     ifne    x680x0        ;68010 and higher
  2727.     dc.w    $42C0        ;MOVE CCR,D0
  2728.     endc
  2729.     and.w    regcon0f,d0
  2730.     move.b    0(flagptr,d0.w),regf
  2731.     move.w    d1,regh(regs)
  2732.     jmp    (return)
  2733.  
  2734. sspd    lsxxd                ;ED73 SSPD addr
  2735.     move.l    pseudosp,d0
  2736.     sub.l    targbase,d0
  2737.     move.b    d0,(a0)+
  2738.     lsr.w    #8,d0
  2739.     move.b    d0,(a0)
  2740.     jmp    (return)
  2741.  
  2742. inac    move.b    regc(regs),d0        ;ED78 IN A,(C)
  2743.     lea    tmprega,a0
  2744.     jsr    inp
  2745.     move.b    tmprega,rega
  2746.     jmp    (return)
  2747.  
  2748. outca    move.b    regc(regs),d0        ;ED79 OUT (C),A
  2749.     lea    tmprega,a0
  2750.     move.b    rega,(a0)
  2751.     jsr    outp
  2752.     jmp    (return)
  2753.  
  2754. dadcs    move.w    pseudosp,d0        ;ED7A DADC SP
  2755.     move.w    regh(regs),d1
  2756.     asr.b    #1,regf     ;Put simulated carry flag in 68000's X flag.
  2757.     ori    #4,ccr        ;Set the 68000's Z flag for ADDX/SUBX.
  2758.     addx.w    d0,d1
  2759.     ifeq    x680x0        ;68000 only
  2760.     move    sr,d0
  2761.     endc
  2762.     ifne    x680x0        ;68010 and higher
  2763.     dc.w    $42C0        ;MOVE CCR,D0
  2764.     endc
  2765.     and.w    regcon0f,d0
  2766.     move.b    0(flagptr,d0.w),regf
  2767.     move.w    d1,regh(regs)
  2768.     jmp    (return)
  2769.  
  2770. lspd    lsxxd                ;ED7B LSPD addr
  2771.     moveq    #0,d0
  2772.     move.b    1(a0),d0
  2773.     lsl.w    #8,d0
  2774.     move.b    (a0),d0
  2775.     movea.l    d0,pseudosp
  2776.     adda.l    targbase,pseudosp
  2777.     jmp    (return)
  2778.  
  2779. ldi    moveq    #0,d1            ;EDA0 LDI
  2780.     move.w    regh(regs),d0
  2781.     move.w    regd(regs),d1
  2782.     move.b    0(targbase,d0.l),0(targbase,d1.l)
  2783.     addq.w    #1,regh(regs)
  2784.     addq.w    #1,regd(regs)
  2785.     subq.w    #1,regb(regs)
  2786.     beq.s    1$
  2787.     ori.b    #4,regf
  2788.     andi.b    #$ED,regf
  2789.     jmp    (return)
  2790. 1$    andi.b    #$E9,regf
  2791.     jmp    (return)
  2792.  
  2793. cmpi    move.w    regh(regs),d0        ;EDA1 CMPI (Z-80 mnemonic is CPI)
  2794.     cmp.b    0(targbase,d0.l),rega
  2795.     setflag    SETONLY
  2796.     addq.w    #1,regh(regs)
  2797.     subq.w    #1,regb(regs)
  2798.     beq.s    1$
  2799.     ori.b    #6,regf
  2800.     jmp    (return)
  2801. 1$    ori.b    #2,regf
  2802.     jmp    (return)
  2803.  
  2804. ini    move.b    regc(regs),d0        ;EDA2 INI
  2805.     move.w    regh(regs),d1
  2806.     lea    0(targbase,d1.l),a0
  2807.     jsr    inp
  2808.     addq.w    #1,regh(regs)
  2809.     subq.b    #1,regb(regs)
  2810.     jmp    (return)
  2811.  
  2812. outi    move.b    regc(regs),d0        ;EDA3 OUTI
  2813.     move.w    regh(regs),d1
  2814.     lea    0(targbase,d1.l),a0
  2815.     jsr    outp
  2816.     addq.w    #1,regh(regs)
  2817.     subq.b    #1,regb(regs)
  2818.     jmp    (return)
  2819.  
  2820. ldd    moveq    #0,d1            ;EDA8 LDD
  2821.     move.w    regh(regs),d0
  2822.     move.w    regd(regs),d1
  2823.     move.b    0(targbase,d0.l),0(targbase,d1.l)
  2824.     subq.w    #1,regh(regs)
  2825.     subq.w    #1,regd(regs)
  2826.     subq.w    #1,regb(regs)
  2827.     beq.s    1$
  2828.     ori.b    #4,regf
  2829.     andi.b    #$ED,regf
  2830.     jmp    (return)
  2831. 1$    andi.b    #$E9,regf
  2832.     jmp    (return)
  2833.  
  2834. cpd    move.w    regh(regs),d0        ;EDA9 CPD
  2835.     cmp.b    0(targbase,d0.l),rega
  2836.     setflag    SETONLY
  2837.     subq.w    #1,regh(regs)
  2838.     subq.w    #1,regb(regs)
  2839.     beq.s    1$
  2840.     ori.b    #6,regf
  2841.     jmp    (return)
  2842. 1$    ori.b    #2,regf
  2843.     jmp    (return)
  2844.  
  2845. ind    move.b    regc(regs),d0        ;EDAA IND
  2846.     move.w    regh(regs),d1
  2847.     lea    0(targbase,d1.l),a0
  2848.     jsr    inp
  2849.     subq.w    #1,regh(regs)
  2850.     subq.b    #1,regb(regs)
  2851.     jmp    (return)
  2852.  
  2853. outd    move.b    regc(regs),d0        ;EDAB OUTD
  2854.     move.w    regh(regs),d1
  2855.     lea    0(targbase,d1.l),a0
  2856.     jsr    outp
  2857.     subq.w    #1,regh(regs)
  2858.     subq.b    #1,regb(regs)
  2859.     jmp    (return)
  2860.  
  2861. ldir    move.l    a5,-(sp)        ;EDB0 LDIR
  2862.     move.w    regb(regs),d1        ;Grab count.
  2863.     move.w    regh(regs),d0        ;Source
  2864.     lea    0(targbase,d0.l),a0
  2865.     move.w    regd(regs),d0        ;Destination
  2866.     lea    0(targbase,d0.l),a5
  2867.     add.w    d1,regh(regs)        ;Adjust Z-80 registers now.
  2868.     add.w    d1,regd(regs)
  2869.     clr.w    regb(regs)
  2870.     andi.b    #$C1,regf
  2871.     subq.w    #1,d1            ;Adjust count for DBRA.
  2872. ldirlop move.b    (a0)+,(a5)+
  2873.     dbra    d1,ldirlop
  2874.     move.l    (sp)+,a5
  2875.     jmp    (return)
  2876.  
  2877. cpir    move.w    regb(regs),d1        ;EDB1 CPIR
  2878.     subq.w    #1,d1            ;Grab count, adjust for DBRA.
  2879.     move.w    regh(regs),d0        ;Source
  2880.     lea    0(targbase,d0.l),a0
  2881. cpirlop addq.w    #1,d0
  2882.     cmp.b    (a0)+,rega
  2883.     dbeq    d1,cpirlop
  2884.     bne.s    cpirnom
  2885.     move.w    d0,regh(regs)        ;Restore Z-80 registers.
  2886.     move.w    d1,regb(regs)
  2887.     beq.s    1$
  2888.     moveq    #$46,regf        ;Found, in the string.
  2889.     jmp    (return)
  2890. 1$    moveq    #$42,regf        ;Found, but at last place.
  2891.     jmp    (return)
  2892. cpirnom    move.w    d0,regh(regs)        ;Restore Z-80 registers.
  2893.     addq.w    #1,d1
  2894.     move.w    d1,regb(regs)
  2895.     beq.s    2$
  2896.     moveq    #6,regf
  2897.     jmp    (return)
  2898. 2$    moveq    #2,regf
  2899.     jmp    (return)
  2900.  
  2901. inir    move.b    regc(regs),d1        ;EDB2 INIR
  2902.     move.w    regh(regs),d0
  2903.     lea    0(targbase,d0.l),a0
  2904.     jsr    inp
  2905.     addq.w    #1,regh(regs)
  2906.     subq.b    #1,regb(regs)
  2907.     bne.s    inir
  2908.     jmp    (return)
  2909.  
  2910. otir    move.b    regc(regs),d1        ;EDB3 OTIR
  2911.     move.w    regh(regs),d0
  2912.     lea    0(targbase,d0.l),a0
  2913.     jsr    outp
  2914.     addq.w    #1,regh(regs)
  2915.     subq.b    #1,regb(regs)
  2916.     bne.s    otir
  2917.     jmp    (return)
  2918.  
  2919. lddr    move.l    a5,-(sp)        ;EDB8 LDDR
  2920.     move.w    regb(regs),d1        ;Grab count.
  2921.     move.w    regh(regs),d0        ;Source
  2922.     lea    1(targbase,d0.l),a0
  2923.     move.w    regd(regs),d0        ;Destination
  2924.     lea    1(targbase,d0.l),a5
  2925.     sub.w    d1,regh(regs)        ;Adjust Z-80 registers now.
  2926.     sub.w    d1,regd(regs)
  2927.     clr.w    regb(regs)
  2928.     andi.b    #$C1,regf
  2929.     subq.w    #1,d1            ;Adjust count for DBRA.
  2930. lddrlop move.b    -(a0),-(a5)
  2931.     dbra    d1,lddrlop
  2932.     move.l    (sp)+,a5
  2933.     jmp    (return)
  2934.  
  2935. cpdr    move.w    regb(regs),d1        ;EDB9 CPDR
  2936.     subq.w    #1,d1            ;Grab count, adjust for DBRA.
  2937.     move.w    regh(regs),d0        ;Source
  2938.     lea    1(targbase,d0.l),a0
  2939. cpdrlop subq.w    #1,d0
  2940.     cmp.b    -(a0),rega
  2941.     dbeq    d1,cpdrlop
  2942.     bne.s    cpdrnom
  2943.     move.w    d0,regh(regs)        ;Restore Z-80 registers.
  2944.     move.w    d1,regb(regs)
  2945.     beq.s    1$
  2946.     moveq    #$46,regf        ;Found, in the string.
  2947.     jmp    (return)
  2948. 1$    moveq    #$42,regf        ;Found, but at last place.
  2949.     jmp    (return)
  2950. cpdrnom move.w    d0,regh(regs)
  2951.     addq.w    #1,d1
  2952.     move.w    d1,regb(regs)
  2953.     beq.s    2$
  2954.     moveq    #6,regf
  2955.     jmp    (return)
  2956. 2$    moveq    #2,regf
  2957.     jmp    (return)
  2958.  
  2959. indr    move.b    regc(regs),d1        ;EDBA INDR
  2960.     move.w    regh(regs),d0
  2961.     lea    0(targbase,d0.l),a0
  2962.     jsr    inp
  2963.     subq.w    #1,regh(regs)
  2964.     subq.b    #1,regb(regs)
  2965.     bne.s    indr
  2966.     jmp    (return)
  2967.  
  2968. otdr    move.b    regc(regs),d1        ;EDBB OTDR
  2969.     move.w    regh(regs),d0
  2970.     lea    0(targbase,d0.l),a0
  2971.     jsr    outp
  2972.     subq.w    #1,regh(regs)
  2973.     subq.b    #1,regb(regs)
  2974.     bne.s    otdr
  2975.     jmp    (return)
  2976.  
  2977. dadiyb    move.w    regb(regs),d0        ;FD09 DAD IY,B
  2978.     add.w    d0,regiy(regs)
  2979.     docyf
  2980.  
  2981. dadiyd    move.w    regd(regs),d0        ;FD19 DAD IY,D
  2982.     add.w    d0,regiy(regs)
  2983.     docyf
  2984.  
  2985. lxiiy    move.b    (pseudopc)+,regyl(regs) ;FD21 LXI IY,nnnn
  2986.     move.b    (pseudopc)+,regyh(regs)
  2987.     jmp    (return)
  2988.  
  2989. siyd    lsxxd                ;FD22 SIYD addr
  2990.     move.b    regyl(regs),(a0)+
  2991.     move.b    regyh(regs),(a0)
  2992.     jmp    (return)
  2993.  
  2994. inxiy    addq.w    #1,regiy(regs)        ;FD23 INX IY
  2995.     jmp    (return)
  2996.  
  2997. inryh    addq.b    #1,regyh(regs)        ;FD24 INR YH (undocumented)
  2998.     inrflag
  2999.  
  3000. dcryh    subq.b    #1,regyh(regs)        ;FD25 DCR YH (undocumented)
  3001.     inrflag
  3002.  
  3003. mviyh    move.b    (pseudopc)+,regyh(regs) ;FD26 MVI YH,nn (undocumented)
  3004.     jmp    (return)
  3005.  
  3006. dadiyy    asl.w    regiy(regs)        ;FD29 DAD IY,IY (multiply by 2)
  3007.     docyf
  3008.  
  3009. liyd    lsxxd                ;FD2A LIYD addr
  3010.     move.b    (a0)+,regyl(regs)
  3011.     move.b    (a0),regyh(regs)
  3012.     jmp    (return)
  3013.  
  3014. dcxiy    subq.w    #1,regiy(regs)        ;FD2B DCX IY
  3015.     jmp    (return)
  3016.  
  3017. inryl    addq.b    #1,regyl(regs)        ;FD2C INR YL (undocumented)
  3018.     inrflag
  3019.  
  3020. dcryl    subq.b    #1,regyl(regs)        ;FD2D DCR YL (undocumented)
  3021.     inrflag
  3022.  
  3023. mviyl    move.b    (pseudopc)+,regyl(regs) ;FD2E MVI YL,nn (undocumented)
  3024.     jmp    (return)
  3025.  
  3026. inriy    calcind y            ;FD34 INR (IY+d)
  3027.     addq.b    #1,0(targbase,d0.l)
  3028.     inrflag
  3029.  
  3030. dcriy    calcind y            ;FD35 DCR (IY+d)
  3031.     subq.b    #1,0(targbase,d0.l)
  3032.     inrflag
  3033.  
  3034. mviiy    calcind y            ;FD36 MVI (IY+d),nn
  3035.     move.b    (pseudopc)+,0(targbase,d0.l)
  3036.     jmp    (return)
  3037.  
  3038. dadiys    move.l    pseudosp,d0        ;FD39 DAD IY,SP
  3039.     sub.l    targbase,d0
  3040.     add.w    d0,regiy(regs)
  3041.     docyf
  3042.  
  3043. movbyh    move.b    regyh(regs),regb(regs)    ;FD44 MOV B,YH (undocumented)
  3044.     jmp    (return)
  3045.  
  3046. movbyl    move.b    regyl(regs),regb(regs)    ;FD45 MOV B,YL (undocumented)
  3047.     jmp    (return)
  3048.  
  3049. movbiy    calcind y            ;FD46 MOV B,(IY+d)
  3050.     move.b    0(targbase,d0.l),regb(regs)
  3051.     jmp    (return)
  3052.  
  3053. movcyh    move.b    regyh(regs),regc(regs)    ;FD4C MOV C,YH (undocumented)
  3054.     jmp    (return)
  3055.  
  3056. movcyl    move.b    regyl(regs),regc(regs)    ;FD4D MOV C,YL (undocumented)
  3057.     jmp    (return)
  3058.  
  3059. movciy    calcind y            ;FD4E MOV C,(IY+d)
  3060.     move.b    0(targbase,d0.l),regc(regs)
  3061.     jmp    (return)
  3062.  
  3063. movdyh    move.b    regyh(regs),regd(regs)    ;FD54 MOV D,YH (undocumented)
  3064.     jmp    (return)
  3065.  
  3066. movdyl    move.b    regyl(regs),regd(regs)    ;FD55 MOV D,YL (undocumented)
  3067.     jmp    (return)
  3068.  
  3069. movdiy    calcind y            ;FD56 MOV D,(IY+d)
  3070.     move.b    0(targbase,d0.l),regd(regs)
  3071.     jmp    (return)
  3072.  
  3073. moveyh    move.b    regyh(regs),rege(regs)    ;FD5C MOV E,YH (undocumented)
  3074.     jmp    (return)
  3075.  
  3076. moveyl    move.b    regyl(regs),rege(regs)    ;FD5D MOV E,YL (undocumented)
  3077.     jmp    (return)
  3078.  
  3079. moveiy    calcind y            ;FD5E MOV E,(IY+d)
  3080.     move.b    0(targbase,d0.l),rege(regs)
  3081.     jmp    (return)
  3082.  
  3083. movyhb    move.b    regb(regs),regyh(regs)    ;FD60 MOV YH,B (undocumented)
  3084.     jmp    (return)
  3085.  
  3086. movyhc    move.b    regc(regs),regyh(regs)    ;FD61 MOV YH,C (undocumented)
  3087.     jmp    (return)
  3088.  
  3089. movyhd    move.b    regd(regs),regyh(regs)    ;FD62 MOV YH,D (undocumented)
  3090.     jmp    (return)
  3091.  
  3092. movyhe    move.b    rege(regs),regyh(regs)    ;FD63 MOV YH,E (undocumented)
  3093.     jmp    (return)
  3094.  
  3095. mvyhyh    jmp    (return)        ;FD64 MOV YH,YH (undocumented)
  3096.  
  3097. mvyhyl    move.b    regyl(regs),regyh(regs) ;FD65 MOV YH,YL (undocumented)
  3098.     jmp    (return)
  3099.  
  3100. movhiy    calcind y            ;FD66 MOV H,(IY+d)
  3101.     move.b    0(targbase,d0.l),regh(regs)
  3102.     jmp    (return)
  3103.  
  3104. movylb    move.b    regb(regs),regyl(regs)    ;FD68 MOV YL,B (undocumented)
  3105.     jmp    (return)
  3106.  
  3107. movylc    move.b    regc(regs),regyl(regs)    ;FD69 MOV YL,C (undocumented)
  3108.     jmp    (return)
  3109.  
  3110. movyld    move.b    regd(regs),regyl(regs)    ;FD6A MOV YL,D (undocumented)
  3111.     jmp    (return)
  3112.  
  3113. movyle    move.b    rege(regs),regyl(regs)    ;FD6B MOV YL,E (undocumented)
  3114.     jmp    (return)
  3115.  
  3116. mvylyh    move.b    regyh(regs),regyl(regs) ;FD6C MOV YL,YH (undocumented)
  3117.     jmp    (return)
  3118.  
  3119. mvylyl    jmp    (return)        ;FD6D MOV YL,YL (undocumented)
  3120.  
  3121. movliy    calcind y            ;FD6E MOV L,(IY+d)
  3122.     move.b    0(targbase,d0.l),regl(regs)
  3123.     jmp    (return)
  3124.  
  3125. moviyb    calcind y            ;FD70 MOV (IY+d),B
  3126.     move.b    regb(regs),0(targbase,d0.l)
  3127.     jmp    (return)
  3128.  
  3129. moviyc    calcind y            ;FD71 MOV (IY+d),C
  3130.     move.b    regc(regs),0(targbase,d0.l)
  3131.     jmp    (return)
  3132.  
  3133. moviyd    calcind y            ;FD72 MOV (IY+d),D
  3134.     move.b    regd(regs),0(targbase,d0.l)
  3135.     jmp    (return)
  3136.  
  3137. moviye    calcind y            ;FD73 MOV (IY+d),E
  3138.     move.b    rege(regs),0(targbase,d0.l)
  3139.     jmp    (return)
  3140.  
  3141. moviyh    calcind y            ;FD74 MOV (IY+d),H
  3142.     move.b    regh(regs),0(targbase,d0.l)
  3143.     jmp    (return)
  3144.  
  3145. moviyl    calcind y            ;FD75 MOV (IY+d),L
  3146.     move.b    regl(regs),0(targbase,d0.l)
  3147.     jmp    (return)
  3148.  
  3149. moviya    calcind y            ;FD77 MOV (IY+d),A
  3150.     move.b    rega,0(targbase,d0.l)
  3151.     jmp    (return)
  3152.  
  3153. movayh    move.b    regyh(regs),rega    ;FD7C MOV A,YH (undocumented)
  3154.     jmp    (return)
  3155.  
  3156. movayl    move.b    regyl(regs),rega    ;FD7D MOV A,YL (undocumented)
  3157.     jmp    (return)
  3158.  
  3159. movaiy    calcind y            ;FD7E MOV A,(IY+d)
  3160.     move.b    0(targbase,d0.l),rega
  3161.     jmp    (return)
  3162.  
  3163. addyh    move.b    regyh(regs),d0        ;FD84 ADD YH (undocumented)
  3164.     addflag
  3165.  
  3166. addyl    move.b    regyl(regs),d0        ;FD85 ADD YL (undocumented)
  3167.     addflag
  3168.  
  3169. addiy    calcind y            ;FD86 ADD (IY+d)
  3170.     move.b    0(targbase,d0.l),d0
  3171.     addflag
  3172.  
  3173. adcyh    move.b    regf,regop3(regs)    ;FD8C ADC YH (undocumented)
  3174.     asr.b    #1,regf
  3175.     move.b    regyh(regs),d0
  3176.     adcflag
  3177.  
  3178. adcyl    move.b    regf,regop3(regs)    ;FD8E ADC YL (undocumented)
  3179.     asr.b    #1,regf
  3180.     move.b    regyl(regs),d0
  3181.     adcflag
  3182.  
  3183. adciy    move.b    regf,regop3(regs)    ;FD8E ADC (IY+d)
  3184.     calcind y
  3185.     asr.b    #1,regf
  3186.     move.b    0(targbase,d0.l),d0
  3187.     adcflag
  3188.     
  3189. subyh    sub.b    regyh(regs),rega    ;FD94 SUB YH (undocumented)
  3190.     setflag
  3191.  
  3192. subyl    sub.b    regyl(regs),rega    ;FD95 SUB YL (undocumented)
  3193.     setflag
  3194.  
  3195. subiy    calcind y            ;FD96 SUB (IY+d)
  3196.     sub.b    0(targbase,d0.l),rega
  3197.     setflag
  3198.  
  3199. sbbyh    asr.b    #1,regf         ;FD9C SBB YH (undocumented)
  3200.     move.b    regyh(regs),d0
  3201.     sbbflag
  3202.  
  3203. sbbyl    asr.b    #1,regf         ;FD9D SBB YL (undocumented)
  3204.     move.b    regyl(regs),d0
  3205.     sbbflag
  3206.  
  3207. sbbiy    calcind y            ;FD9E SBB (IY+d)
  3208.     asr.b    #1,regf
  3209.     move.b    0(targbase,d0.l),d0
  3210.     sbbflag
  3211.  
  3212. anayh    and.b    regyh(regs),rega    ;FDA4 ANA YH (undocumented)
  3213.     move.b    16(flagptr,rega.w),regf
  3214.     jmp    (return)
  3215.  
  3216. anayl    and.b    regyl(regs),rega    ;FDA5 ANA YL (undocumented)
  3217.     move.b    16(flagptr,rega.w),regf
  3218.     jmp    (return)
  3219.  
  3220. anaiy    calcind y            ;FDA6 ANA (IY+d)
  3221.     and.b    0(targbase,d0.l),rega
  3222.     move.b    16(flagptr,rega.w),regf
  3223.     jmp    (return)
  3224.  
  3225. xrayh    move.b    regyh(regs),d0        ;FDAC XRA YH (undocumented)
  3226.     eor.b    d0,rega
  3227.     move.b    16(flagptr,rega.w),regf
  3228.     jmp    (return)
  3229.  
  3230. xrayl    move.b    regyl(regs),d0        ;FDAD XRA YL (undocumented)
  3231.     eor.b    d0,rega
  3232.     move.b    16(flagptr,rega.w),regf
  3233.     jmp    (return)
  3234.  
  3235. xraiy    calcind y            ;FDAE XRA (IY+d)
  3236.     move.b    0(targbase,d0.l),d0
  3237.     eor.b    d0,rega
  3238.     move.b    16(flagptr,rega.w),regf
  3239.     jmp    (return)
  3240.  
  3241. orayh    or.b    regyh(regs),rega    ;FDB4 ORA YH (undocumented)
  3242.     move.b    16(flagptr,rega.w),regf
  3243.     jmp    (return)
  3244.  
  3245. orayl    or.b    regyl(regs),rega    ;FDB5 ORA YL (undocumented)
  3246.     move.b    16(flagptr,rega.w),regf
  3247.     jmp    (return)
  3248.  
  3249. oraiy    calcind    y            ;FDB6 ORA (IY+d)
  3250.     or.b    0(targbase,d0.l),rega
  3251.     move.b    16(flagptr,rega.w),regf
  3252.     jmp    (return)
  3253.  
  3254. cmpyh    cmp.b    regyh(regs),rega    ;FDBC CMP YH (undocumented)
  3255.     setflag
  3256.  
  3257. cmpyl    cmp.b    regyl(regs),rega    ;FDBD CMP YL (undocumented)
  3258.     setflag
  3259.  
  3260. cmpiy    calcind    y            ;FDBE CMP (IY+d)
  3261.     cmp.b    0(targbase,d0.l),rega
  3262.     setflag
  3263.  
  3264. * FDCB-prefix instructions can use the DDCB-prefix routines,
  3265. *  since the operand address is already in D0.
  3266.  
  3267. popiy    move.b    (pseudosp)+,regyl(regs) ;FDE1 POP IY
  3268.     move.b    (pseudosp)+,regyh(regs)
  3269.     jmp    (return)
  3270.  
  3271. xtiy    move.b    regyl(regs),d0        ;FDE3 XTIY
  3272.     move.b    (pseudosp),regyl(regs)
  3273.     move.b    d0,(pseudosp)
  3274.     move.b    regyh(regs),d0
  3275.     move.b    1(pseudosp),regyh(regs)
  3276.     move.b    d0,1(pseudosp)
  3277.     jmp    (return)
  3278.  
  3279. pushiy    move.b    regyh(regs),-(pseudosp) ;FDE5 PUSH IY
  3280.     move.b    regyl(regs),-(pseudosp)
  3281.     jmp    (return)
  3282.  
  3283. pciy    move.w    regiy(regs),d0        ;FDE9 PCIY
  3284.     lea    0(targbase,d0.l),pseudopc
  3285.     jmp    (return)
  3286.  
  3287. spiy    move.w    regiy(regs),d0        ;FDF9 SPIY
  3288.     lea    0(targbase,d0.l),pseudosp
  3289.     jmp    (return)
  3290.     page
  3291. *************************************************************************
  3292. *                                    *
  3293. *    Opcode dispatch table                        *
  3294. *                                    *
  3295. *************************************************************************
  3296.     data    data
  3297.  
  3298.     even
  3299. optabl    dc.l    nop00,lxib,staxb,inxb,inrb,dcrb,mvib,rlc
  3300.     dc.l    exaf,dadb,ldaxb,dcxb,inrc,dcrc,mvic,rrc
  3301.     dc.l    djnz,lxid,staxd,inxd,inrd,dcrd,mvid,ral
  3302.     dc.l    jr,dadd,ldaxd,dcxd,inre,dcre,mvie,rar
  3303.     dc.l    jrnz,lxih,shld,inxh,inrh,dcrh,mvih,daa
  3304.     dc.l    jrz,dadh,lhld,dcxh,inrl,dcrl,mvil,cma
  3305.     dc.l    jrnc,lxis,sta,inxs,inrm,dcrm,mvim,stc
  3306.     dc.l    jrc,dads,lda,dcxs,inra,dcra,mvia,cmc
  3307.     dc.l    movebb,movebc,movebd,movebe,movebh,movebl,movebm,moveba
  3308.     dc.l    movecb,movecc,movecd,movece,movech,movecl,movecm,moveca
  3309.     dc.l    movedb,movedc,movedd,movede,movedh,movedl,movedm,moveda
  3310.     dc.l    moveeb,moveec,moveed,moveee,moveeh,moveel,moveem,moveea
  3311.     dc.l    movehb,movehc,movehd,movehe,movehh,movehl,movehm,moveha
  3312.     dc.l    movelb,movelc,moveld,movele,movelh,movell,movelm,movela
  3313.     dc.l    movemb,movemc,movemd,moveme,movemh,moveml,halt,movema
  3314.     dc.l    moveab,moveac,movead,moveae,moveah,moveal,moveam,moveaa
  3315.     dc.l    addb,addc,addd,adde,addh,addl,addm,adda
  3316.     dc.l    adcb,adcc,adcd,adce,adch,adcl,adcm,adca
  3317.     dc.l    subb,subc,subd,sube,subh,subl,subm,suba
  3318.     dc.l    sbbb,sbbc,sbbd,sbbe,sbbh,sbbl,sbbm,sbba
  3319.     dc.l    andb,andc,andd,ande,andh,andl,andm,anda
  3320.     dc.l    xrab,xrac,xrad,xrae,xrah,xral,xram,xraa
  3321.     dc.l    orab,orac,orad,orae,orah,oral,oram,oraa
  3322.     dc.l    cmpb,cmpc,cmpd,cmpe,cmph,cmpl,cmpam,cmpaa
  3323.     dc.l    rnz,popb,jnz,jmpa,cnz,pushb,adi,rst0
  3324.     dc.l    rz,ret,jz,preCB,cz,call,aci,rst1
  3325.     dc.l    rnc,popd,jnc,out,cnc,pushd,sui,rst2
  3326.     dc.l    rc,exx,jc,in,cc,preDD,sbi,rst3
  3327.     dc.l    rpo,poph,jpo,xthl,cpo,pushh,ani,rst4
  3328.     dc.l    rpe,pchl,jpe,xchg,cpe,preED,xri,rst5
  3329.     dc.l    rp,popp,jp,di,cp,pushp,oria,rst6
  3330.     dc.l    rm,sphl,jm,ei,cm,preFD,cpi,rst7
  3331.     page
  3332. *************************************************************************
  3333. *                                    *
  3334. *    Flag register lookup tables                    *
  3335. *                                    *
  3336. *************************************************************************
  3337. flags    dc.b    $00,$01,$04,$05,$40,$41,$44,$45,$80,$81,$84,$85,$C0,$C1,$C4,$C5
  3338.     dc.b    $44,$00,$00,$04,$00,$04,$04,$00,$00,$04,$04,$00,$04,$00,$00,$04
  3339.     dc.b    $00,$04,$04,$00,$04,$00,$00,$04,$04,$00,$00,$04,$00,$04,$04,$00
  3340.     dc.b    $00,$04,$04,$00,$04,$00,$00,$04,$04,$00,$00,$04,$00,$04,$04,$00
  3341.     dc.b    $04,$00,$00,$04,$00,$04,$04,$00,$00,$04,$04,$00,$04,$00,$00,$04
  3342.     dc.b    $00,$04,$04,$00,$04,$00,$00,$04,$04,$00,$00,$04,$00,$04,$04,$00
  3343.     dc.b    $04,$00,$00,$04,$00,$04,$04,$00,$00,$04,$04,$00,$04,$00,$00,$04
  3344.     dc.b    $04,$00,$00,$04,$00,$04,$04,$00,$00,$04,$04,$00,$04,$00,$00,$04
  3345.     dc.b    $00,$04,$04,$00,$04,$00,$00,$04,$04,$00,$00,$04,$00,$04,$04,$00
  3346.     dc.b    $80,$84,$84,$80,$84,$80,$80,$84,$84,$80,$80,$84,$80,$84,$84,$80
  3347.     dc.b    $84,$80,$80,$84,$80,$84,$84,$80,$80,$84,$84,$80,$84,$80,$80,$84
  3348.     dc.b    $84,$80,$80,$84,$80,$84,$84,$80,$80,$84,$84,$80,$84,$80,$80,$84
  3349.     dc.b    $80,$84,$84,$80,$84,$80,$80,$84,$84,$80,$80,$84,$80,$84,$84,$80
  3350.     dc.b    $84,$80,$80,$84,$80,$84,$84,$80,$80,$84,$84,$80,$84,$80,$80,$84
  3351.     dc.b    $80,$84,$84,$80,$84,$80,$84,$80,$84,$80,$80,$84,$80,$84,$84,$80
  3352.     dc.b    $80,$84,$84,$80,$84,$80,$84,$80,$84,$80,$80,$84,$80,$84,$84,$80
  3353.     dc.b    $84,$80,$80,$84,$80,$84,$84,$80,$80,$84,$84,$80,$84,$80,$80,$84
  3354.     page
  3355. *************************************************************************
  3356. *                                    *
  3357. *    Z-80 opcode dispatch table.  One longword entry per opcode    *
  3358. *    of the target (Z-80) processor, including illegals.        *
  3359. *                                    *
  3360. *************************************************************************
  3361.  
  3362. CBoptab:
  3363.     dc.l    rlcb,rlcc,rlcd,rlce,rlch,rlcl,rlcm,rlca         ;CB00
  3364.     dc.l    rrcb,rrcc,rrcd,rrce,rrch,rrcl,rrcm,rrca         ;CB08
  3365.     dc.l    rlrb,rlrc,rlrd,rlre,rlrh,rlrl,rlrm,rlra         ;CB10
  3366.     dc.l    rrrb,rrrc,rrrd,rrre,rrrh,rrrl,rrrm,rrra         ;CB18
  3367.     dc.l    slab,slac,slad,slae,slah,slal,slam,slaa         ;CB20
  3368.     dc.l    srab,srac,srad,srae,srah,sral,sram,sraa         ;CB28
  3369.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;CB30
  3370.     dc.l    srlb,srlc,srld,srle,srlh,srll,srlm,srla         ;CB38
  3371.     dc.l    bit0b,bit0c,bit0d,bit0e,bit0h,bit0l,bit0m,bit0a     ;CB40
  3372.     dc.l    bit1b,bit1c,bit1d,bit1e,bit1h,bit1l,bit1m,bit1a     ;CB48
  3373.     dc.l    bit2b,bit2c,bit2d,bit2e,bit2h,bit2l,bit2m,bit2a     ;CB50
  3374.     dc.l    bit3b,bit3c,bit3d,bit3e,bit3h,bit3l,bit3m,bit3a     ;CB58
  3375.     dc.l    bit4b,bit4c,bit4d,bit4e,bit4h,bit4l,bit4m,bit4a     ;CB60
  3376.     dc.l    bit5b,bit5c,bit5d,bit5e,bit5h,bit5l,bit5m,bit5a     ;CB68
  3377.     dc.l    bit6b,bit6c,bit6d,bit6e,bit6h,bit6l,bit6m,bit6a     ;CB70
  3378.     dc.l    bit7b,bit7c,bit7d,bit7e,bit7h,bit7l,bit7m,bit7a     ;CB78
  3379.     dc.l    res0b,res0c,res0d,res0e,res0h,res0l,res0m,res0a     ;CB80
  3380.     dc.l    res1b,res1c,res1d,res1e,res1h,res1l,res1m,res1a     ;CB88
  3381.     dc.l    res2b,res2c,res2d,res2e,res2h,res2l,res2m,res2a     ;CB90
  3382.     dc.l    res3b,res3c,res3d,res3e,res3h,res3l,res3m,res3a     ;CB98
  3383.     dc.l    res4b,res4c,res4d,res4e,res4h,res4l,res4m,res4a     ;CBA0
  3384.     dc.l    res5b,res5c,res5d,res5e,res5h,res5l,res5m,res5a     ;CBA8
  3385.     dc.l    res6b,res6c,res6d,res6e,res6h,res6l,res6m,res6a     ;CBB0
  3386.     dc.l    res7b,res7c,res7d,res7e,res7h,res7l,res7m,res7a     ;CBB8
  3387.     dc.l    set0b,set0c,set0d,set0e,set0h,set0l,set0m,set0a     ;CBC0
  3388.     dc.l    set1b,set1c,set1d,set1e,set1h,set1l,set1m,set1a     ;CBC8
  3389.     dc.l    set2b,set2c,set2d,set2e,set2h,set2l,set2m,set2a     ;CBD0
  3390.     dc.l    set3b,set3c,set3d,set3e,set3h,set3l,set3m,set3a     ;CBD8
  3391.     dc.l    set4b,set4c,set4d,set4e,set4h,set4l,set4m,set4a     ;CBE0
  3392.     dc.l    set5b,set5c,set5d,set5e,set5h,set5l,set5m,set5a     ;CBE8
  3393.     dc.l    set6b,set6c,set6d,set6e,set6h,set6l,set6m,set6a     ;CBF0
  3394.     dc.l    set7b,set7c,set7d,set7e,set7h,set7l,set7m,set7a     ;CBF8
  3395.  
  3396. DDoptab:
  3397.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;DD00
  3398.     dc.l    illgED,dadixb,illgED,illgED,illgED,illgED,illgED,illgED ;DD08
  3399.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;DD10
  3400.     dc.l    illgED,dadixd,illgED,illgED,illgED,illgED,illgED,illgED ;DD18
  3401.     dc.l    illgED,lxiix,sixd,inxix,inrxh,dcrxh,mvixh,illgED    ;DD20
  3402.     dc.l    illgED,dadixx,lixd,dcxix,inrxl,dcrxl,mvixl,illgED    ;DD28
  3403.     dc.l    illgED,illgED,illgED,illgED,inrix,dcrix,mviix,illgED    ;DD30
  3404.     dc.l    illgED,dadixs,illgED,illgED,illgED,illgED,illgED,illgED ;DD38
  3405.     dc.l    illgED,illgED,illgED,illgED,movbxh,movbxl,movbix,illgED ;DD40
  3406.     dc.l    illgED,illgED,illgED,illgED,movcxh,movcxl,movcix,illgED ;DD48
  3407.     dc.l    illgED,illgED,illgED,illgED,movdxh,movdxl,movdix,illgED ;DD50
  3408.     dc.l    illgED,illgED,illgED,illgED,movexh,movexl,moveix,illgED ;DD58
  3409.     dc.l    movxhb,movxhc,movxhd,movxhe,mvxhxh,mvxhxl,movhix,illgED ;DD60
  3410.     dc.l    movxlb,movxlc,movxld,movxle,mvxlxh,mvxlxl,movlix,illgED ;DD60
  3411.     dc.l    movixb,movixc,movixd,movixe,movixh,movixl,illgED,movixa ;DD70
  3412.     dc.l    illgED,illgED,illgED,illgED,movaxh,movaxl,movaix,illgED ;DD78
  3413.     dc.l    illgED,illgED,illgED,illgED,addxh,addxl,addix,illgED    ;DD80
  3414.     dc.l    illgED,illgED,illgED,illgED,adcxh,adcxl,adcix,illgED    ;DD88
  3415.     dc.l    illgED,illgED,illgED,illgED,subxh,subxl,subix,illgED    ;DD90
  3416.     dc.l    illgED,illgED,illgED,illgED,sbbxh,sbbxl,sbbix,illgED    ;DD98
  3417.     dc.l    illgED,illgED,illgED,illgED,anaxh,anaxl,anaix,illgED    ;DDA0
  3418.     dc.l    illgED,illgED,illgED,illgED,xraxh,xraxl,xraix,illgED    ;DDA8
  3419.     dc.l    illgED,illgED,illgED,illgED,oraxh,oraxl,oraix,illgED    ;DDB0
  3420.     dc.l    illgED,illgED,illgED,illgED,cmpxh,cmpxl,cmpix,illgED    ;DDB8
  3421.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;DDC0
  3422.     dc.l    illgED,illgED,illgED,prDDCB,illgED,illgED,illgED,illgED ;DDC8
  3423.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;DDD0
  3424.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;DDD8
  3425.     dc.l    illgED,popix,illgED,xtix,illgED,pushix,illgED,illgED    ;DDE0
  3426.     dc.l    illgED,pcix,illgED,illgED,illgED,illgED,illgED,illgED    ;DDE8
  3427.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;DDF0
  3428.     dc.l    illgED,spix,illgED,illgED,illgED,illgED,illgED,illgED    ;DDF8
  3429.  
  3430. DDCBopt:
  3431.     dc.l    rlcix,rrcix,rlix,rrix,slaix,sraix,ilgDDCB,srlix     ;DDCB06
  3432.     dc.l    bit0ix,bit1ix,bit2ix,bit3ix,bit4ix,bit5ix,bit6ix,bit7ix ;DDCB46
  3433.     dc.l    res0ix,res1ix,res2ix,res3ix,res4ix,res5ix,res6ix,res7ix ;DDCB86
  3434.     dc.l    set0ix,set1ix,set2ix,set3ix,set4ix,set5ix,set6ix,set7ix ;DDCBC6
  3435.  
  3436. EDoptab:
  3437.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED00
  3438.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED08
  3439.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED10
  3440.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED18
  3441.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED20
  3442.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED28
  3443.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED30
  3444.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED38
  3445.     dc.l    inbc,outcb,dsbbb,sbcd,nega,retn,im0,moveia        ;ED40
  3446.     dc.l    incc,outcc,dadcb,lbcd,illgED,reti,illgED,movera     ;ED48
  3447.     dc.l    indc,outcd,dsbbd,sded,illgED,illgED,im1,moveai        ;ED50
  3448.     dc.l    inec,outce,dadcd,lded,illgED,illgED,im2,movear        ;ED58
  3449.     dc.l    inhc,outch,dsbbh,shld,illgED,illgED,illgED,rrd        ;ED60
  3450.     dc.l    inlc,outcl,dadch,lhld,illgED,illgED,illgED,rld        ;ED68
  3451.     dc.l    inmc,outcm,dsbbs,sspd,illgED,illgED,illgED,illgED    ;ED70
  3452.     dc.l    inac,outca,dadcs,lspd,illgED,illgED,illgED,illgED    ;ED78
  3453.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED80
  3454.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED88
  3455.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED90
  3456.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;ED98
  3457.     dc.l    ldi,cmpi,ini,outi,illgED,illgED,illgED,illgED        ;EDA0
  3458.     dc.l    ldd,cpd,ind,outd,illgED,illgED,illgED,illgED        ;EDA8
  3459.     dc.l    ldir,cpir,inir,otir,illgED,illgED,illgED,illgED     ;EDB0
  3460.     dc.l    lddr,cpdr,indr,otdr,illgED,illgED,illgED,illgED     ;EDB8
  3461.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;EDC0
  3462.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;EDC8
  3463.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;EDD0
  3464.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;EDD8
  3465.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;EDE0
  3466.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;EDE8
  3467.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;EDF0
  3468.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;EDF8
  3469.  
  3470. FDoptab:
  3471.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;FD00
  3472.     dc.l    illgED,dadiyb,illgED,illgED,illgED,illgED,illgED,illgED ;FD08
  3473.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;FD10
  3474.     dc.l    illgED,dadiyd,illgED,illgED,illgED,illgED,illgED,illgED ;FD18
  3475.     dc.l    illgED,lxiiy,siyd,inxiy,inryh,dcryh,mviyh,illgED    ;FD20
  3476.     dc.l    illgED,dadiyy,liyd,dcxiy,inryl,dcryl,mviyl,illgED    ;FD28
  3477.     dc.l    illgED,illgED,illgED,illgED,inriy,dcriy,mviiy,illgED    ;FD30
  3478.     dc.l    illgED,dadiys,illgED,illgED,illgED,illgED,illgED,illgED ;FD38
  3479.     dc.l    illgED,illgED,illgED,illgED,movbyh,movbyl,movbiy,illgED ;FD40
  3480.     dc.l    illgED,illgED,illgED,illgED,movcyh,movcyl,movciy,illgED ;FD48
  3481.     dc.l    illgED,illgED,illgED,illgED,movdyh,movdyl,movdiy,illgED ;FD50
  3482.     dc.l    illgED,illgED,illgED,illgED,moveyh,moveyl,moveiy,illgED ;FD58
  3483.     dc.l    movyhb,movyhc,movyhd,movyhe,mvyhyh,mvyhyl,movhiy,illgED ;FD60
  3484.     dc.l    movylb,movylc,movyld,movyle,mvylyh,mvylyl,movliy,illgED ;FD60
  3485.     dc.l    moviyb,moviyc,moviyd,moviye,moviyh,moviyl,illgED,moviya ;FD70
  3486.     dc.l    illgED,illgED,illgED,illgED,movayh,movayl,movaiy,illgED ;FD78
  3487.     dc.l    illgED,illgED,illgED,illgED,addyh,addyl,addiy,illgED    ;FD80
  3488.     dc.l    illgED,illgED,illgED,illgED,adcyh,adcyl,adciy,illgED    ;FD88
  3489.     dc.l    illgED,illgED,illgED,illgED,subyh,subyl,subiy,illgED    ;FD90
  3490.     dc.l    illgED,illgED,illgED,illgED,sbbyh,sbbyl,sbbiy,illgED    ;FD98
  3491.     dc.l    illgED,illgED,illgED,illgED,anayh,anayl,anaiy,illgED    ;FDA0
  3492.     dc.l    illgED,illgED,illgED,illgED,xrayh,xrayl,xraiy,illgED    ;FDA8
  3493.     dc.l    illgED,illgED,illgED,illgED,orayh,orayl,oraiy,illgED    ;FDB0
  3494.     dc.l    illgED,illgED,illgED,illgED,cmpyh,cmpyl,cmpiy,illgED    ;FDB8
  3495.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;FDC0
  3496.     dc.l    illgED,illgED,illgED,prFDCB,illgED,illgED,illgED,illgED ;FDC8
  3497.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;FDD0
  3498.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;FDD8
  3499.     dc.l    illgED,popiy,illgED,xtiy,illgED,pushiy,illgED,illgED    ;FDE0
  3500.     dc.l    illgED,pciy,illgED,illgED,illgED,illgED,illgED,illgED    ;FDE8
  3501.     dc.l    illgED,illgED,illgED,illgED,illgED,illgED,illgED,illgED ;FDF0
  3502.     dc.l    illgED,spiy,illgED,illgED,illgED,illgED,illgED,illgED    ;FDF8
  3503.  
  3504. * FDCBopt is not necessary - DDCBopt can be used,
  3505. *  since the operand address is in D0 for both routines.
  3506.  
  3507.  
  3508.     bss    bss
  3509.  
  3510.     even
  3511.  
  3512. tracesad ds.l    1        ;Start address for trace
  3513. traceead ds.l    1        ;End address for trace
  3514. traceflg ds.b    1        ;Trace activity flag
  3515. tmprega  ds.b    1        ;Work area
  3516.     end
  3517.